summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/security/20130416/6657673.patch
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130416/6657673.patch')
-rw-r--r--java/openjdk6/files/icedtea/security/20130416/6657673.patch9381
1 files changed, 0 insertions, 9381 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130416/6657673.patch b/java/openjdk6/files/icedtea/security/20130416/6657673.patch
deleted file mode 100644
index c2a57be334bd..000000000000
--- a/java/openjdk6/files/icedtea/security/20130416/6657673.patch
+++ /dev/null
@@ -1,9381 +0,0 @@
---- /dev/null 2013-04-25 14:33:00.000000000 -0400
-+++ jaxp/patches/jaxp_src/6657673.patch 2013-04-25 14:43:01.000000000 -0400
-@@ -0,0 +1,9198 @@
-+--- src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java 2013-04-16 14:28:09.232148559 +0100
-++++ src/com/sun/org/apache/bcel/internal/classfile/JavaClass.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -63,6 +63,7 @@
-+ import com.sun.org.apache.bcel.internal.util.ClassVector;
-+ import com.sun.org.apache.bcel.internal.util.ClassQueue;
-+ import com.sun.org.apache.bcel.internal.generic.Type;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ import java.io.*;
-+ import java.util.StringTokenizer;
-+@@ -77,6 +78,7 @@
-+ * class file. Those interested in programatically generating classes
-+ * should see the <a href="../generic/ClassGen.html">ClassGen</a> class.
-+
-++ * @version $Id: JavaClass.java,v 1.4 2007-07-19 04:34:42 ofung Exp $
-+ * @see com.sun.org.apache.bcel.internal.generic.ClassGen
-+ * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
-+ */
-+@@ -451,9 +453,9 @@
-+ String debug = null, sep = null;
-+
-+ try {
-+- debug = System.getProperty("JavaClass.debug");
-++ debug = SecuritySupport.getSystemProperty("JavaClass.debug");
-+ // Get path separator either / or \ usually
-+- sep = System.getProperty("file.separator");
-++ sep = SecuritySupport.getSystemProperty("file.separator");
-+ }
-+ catch (SecurityException e) {
-+ // falls through
-+--- src/com/sun/org/apache/bcel/internal/util/Class2HTML.java 2013-04-16 14:28:09.312149848 +0100
-++++ src/com/sun/org/apache/bcel/internal/util/Class2HTML.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -82,6 +82,7 @@
-+ * method in the Method's frame will jump to the appropiate method in
-+ * the Code frame.
-+ *
-++ * @version $Id: Class2HTML.java,v 1.3 2007-07-19 04:34:52 ofung Exp $
-+ * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
-+ */
-+ public class Class2HTML implements Constants
-+@@ -137,7 +138,7 @@
-+ ClassParser parser=null;
-+ JavaClass java_class=null;
-+ String zip_file = null;
-+- char sep = System.getProperty("file.separator").toCharArray()[0];
-++ char sep = SecuritySupport.getSystemProperty("file.separator").toCharArray()[0];
-+ String dir = "." + sep; // Where to store HTML files
-+
-+ try {
-+--- src/com/sun/org/apache/bcel/internal/util/ClassPath.java 2013-04-16 14:28:09.316149912 +0100
-++++ src/com/sun/org/apache/bcel/internal/util/ClassPath.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -66,6 +66,7 @@
-+ * Responsible for loading (class) files from the CLASSPATH. Inspired by
-+ * sun.tools.ClassPath.
-+ *
-++ * @version $Id: ClassPath.java,v 1.4 2007-07-19 04:34:52 ofung Exp $
-+ * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
-+ */
-+ public class ClassPath implements Serializable {
-+@@ -83,7 +84,7 @@
-+ ArrayList vec = new ArrayList();
-+
-+ for(StringTokenizer tok=new StringTokenizer(class_path,
-+- System.getProperty("path.separator"));
-++ SecuritySupport.getSystemProperty("path.separator"));
-+ tok.hasMoreTokens();)
-+ {
-+ String path = tok.nextToken();
-+@@ -92,7 +93,7 @@
-+ File file = new File(path);
-+
-+ try {
-+- if(file.exists()) {
-++ if(SecuritySupport.getFileExists(file)) {
-+ if(file.isDirectory())
-+ vec.add(new Dir(path));
-+ else
-+@@ -143,8 +144,9 @@
-+ String name = tok.nextToken();
-+ File file = new File(name);
-+
-+- if(file.exists())
-++ if(SecuritySupport.getFileExists(file)) {
-+ list.add(name);
-++ }
-+ }
-+ }
-+ }
-+@@ -159,9 +161,9 @@
-+ String class_path, boot_path, ext_path;
-+
-+ try {
-+- class_path = System.getProperty("java.class.path");
-+- boot_path = System.getProperty("sun.boot.class.path");
-+- ext_path = System.getProperty("java.ext.dirs");
-++ class_path = SecuritySupport.getSystemProperty("java.class.path");
-++ boot_path = SecuritySupport.getSystemProperty("sun.boot.class.path");
-++ ext_path = SecuritySupport.getSystemProperty("java.ext.dirs");
-+ }
-+ catch (SecurityException e) {
-+ return "";
-+@@ -176,8 +178,8 @@
-+ getPathComponents(ext_path, dirs);
-+
-+ for(Iterator e = dirs.iterator(); e.hasNext(); ) {
-+- File ext_dir = new File((String)e.next());
-+- String[] extensions = ext_dir.list(new FilenameFilter() {
-++ File ext_dir = new File((String)e.next());
-++ String[] extensions = SecuritySupport.getFileList(ext_dir, new FilenameFilter() {
-+ public boolean accept(File dir, String name) {
-+ name = name.toLowerCase();
-+ return name.endsWith(".zip") || name.endsWith(".jar");
-+@@ -342,7 +344,7 @@
-+ final File file = new File(dir + File.separatorChar +
-+ name.replace('.', File.separatorChar) + suffix);
-+
-+- return file.exists()? new ClassFile() {
-++ return SecuritySupport.getFileExists(file)? new ClassFile() {
-+ public InputStream getInputStream() throws IOException { return new FileInputStream(file); }
-+
-+ public String getPath() { try {
-+--- src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java 2013-04-16 14:28:09.316149912 +0100
-++++ src/com/sun/org/apache/bcel/internal/util/JavaWrapper.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -72,6 +72,7 @@
-+ * <pre>java com.sun.org.apache.bcel.internal.util.JavaWrapper -Dbcel.classloader=foo.MyLoader &lt;real.class.name&gt; [arguments]</pre>
-+ * </p>
-+ *
-++ * @version $Id: JavaWrapper.java,v 1.3 2007-07-19 04:34:52 ofung Exp $
-+ * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
-+ * @see ClassLoader
-+ */
-+@@ -79,7 +80,7 @@
-+ private java.lang.ClassLoader loader;
-+
-+ private static java.lang.ClassLoader getClassLoader() {
-+- String s = System.getProperty("bcel.classloader");
-++ String s = SecuritySupport.getSystemProperty("bcel.classloader");
-+
-+ if((s == null) || "".equals(s))
-+ s = "com.sun.org.apache.bcel.internal.util.ClassLoader";
-+--- src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -0,0 +1,223 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2002-2004 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++
-++package com.sun.org.apache.bcel.internal.util;
-++
-++import java.io.File;
-++import java.io.FileInputStream;
-++import java.io.FileNotFoundException;
-++import java.io.FilenameFilter;
-++import java.io.InputStream;
-++import java.lang.ClassLoader;
-++import java.security.AccessController;
-++import java.security.PrivilegedAction;
-++import java.security.PrivilegedActionException;
-++import java.security.PrivilegedExceptionAction;
-++import java.util.ListResourceBundle;
-++import java.util.Locale;
-++import java.util.MissingResourceException;
-++import java.util.ResourceBundle;
-++
-++/**
-++ * This class is duplicated for each subpackage so keep it in sync. It is
-++ * package private and therefore is not exposed as part of any API.
-++ *
-++ * @xerces.internal
-++ */
-++public final class SecuritySupport {
-++
-++ private static final SecuritySupport securitySupport = new SecuritySupport();
-++
-++ /**
-++ * Return an instance of this class.
-++ */
-++ public static SecuritySupport getInstance() {
-++ return securitySupport;
-++ }
-++
-++ static ClassLoader getContextClassLoader() {
-++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ try {
-++ cl = Thread.currentThread().getContextClassLoader();
-++ } catch (SecurityException ex) {
-++ }
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ static ClassLoader getSystemClassLoader() {
-++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ try {
-++ cl = ClassLoader.getSystemClassLoader();
-++ } catch (SecurityException ex) {
-++ }
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ static ClassLoader getParentClassLoader(final ClassLoader cl) {
-++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader parent = null;
-++ try {
-++ parent = cl.getParent();
-++ } catch (SecurityException ex) {
-++ }
-++
-++ // eliminate loops in case of the boot
-++ // ClassLoader returning itself as a parent
-++ return (parent == cl) ? null : parent;
-++ }
-++ });
-++ }
-++
-++ public static String getSystemProperty(final String propName) {
-++ return (String) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return System.getProperty(propName);
-++ }
-++ });
-++ }
-++
-++ static FileInputStream getFileInputStream(final File file)
-++ throws FileNotFoundException {
-++ try {
-++ return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-++ public Object run() throws FileNotFoundException {
-++ return new FileInputStream(file);
-++ }
-++ });
-++ } catch (PrivilegedActionException e) {
-++ throw (FileNotFoundException) e.getException();
-++ }
-++ }
-++
-++ /**
-++ * Return resource using the same classloader for the ObjectFactory by
-++ * default or bootclassloader when Security Manager is in place
-++ */
-++ public static InputStream getResourceAsStream(final String name) {
-++ if (System.getSecurityManager() != null) {
-++ return getResourceAsStream(null, name);
-++ } else {
-++ return getResourceAsStream(findClassLoader(), name);
-++ }
-++ }
-++
-++ public static InputStream getResourceAsStream(final ClassLoader cl,
-++ final String name) {
-++ return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ InputStream ris;
-++ if (cl == null) {
-++ ris = Object.class.getResourceAsStream("/" + name);
-++ } else {
-++ ris = cl.getResourceAsStream(name);
-++ }
-++ return ris;
-++ }
-++ });
-++ }
-++
-++ /**
-++ * Gets a resource bundle using the specified base name, the default locale,
-++ * and the caller's class loader.
-++ *
-++ * @param bundle the base name of the resource bundle, a fully qualified
-++ * class name
-++ * @return a resource bundle for the given base name and the default locale
-++ */
-++ public static ListResourceBundle getResourceBundle(String bundle) {
-++ return getResourceBundle(bundle, Locale.getDefault());
-++ }
-++
-++ /**
-++ * Gets a resource bundle using the specified base name and locale, and the
-++ * caller's class loader.
-++ *
-++ * @param bundle the base name of the resource bundle, a fully qualified
-++ * class name
-++ * @param locale the locale for which a resource bundle is desired
-++ * @return a resource bundle for the given base name and locale
-++ */
-++ public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) {
-++ return AccessController.doPrivileged(new PrivilegedAction<ListResourceBundle>() {
-++ public ListResourceBundle run() {
-++ try {
-++ return (ListResourceBundle) ResourceBundle.getBundle(bundle, locale);
-++ } catch (MissingResourceException e) {
-++ try {
-++ return (ListResourceBundle) ResourceBundle.getBundle(bundle, new Locale("en", "US"));
-++ } catch (MissingResourceException e2) {
-++ throw new MissingResourceException(
-++ "Could not load any resource bundle by " + bundle, bundle, "");
-++ }
-++ }
-++ }
-++ });
-++ }
-++
-++ public static String[] getFileList(final File f, final FilenameFilter filter) {
-++ return ((String[]) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return f.list(filter);
-++ }
-++ }));
-++ }
-++
-++ public static boolean getFileExists(final File f) {
-++ return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return f.exists() ? Boolean.TRUE : Boolean.FALSE;
-++ }
-++ })).booleanValue();
-++ }
-++
-++ static long getLastModified(final File f) {
-++ return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return new Long(f.lastModified());
-++ }
-++ })).longValue();
-++ }
-++
-++
-++ /**
-++ * Figure out which ClassLoader to use.
-++ */
-++ public static ClassLoader findClassLoader()
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ //this will ensure bootclassloader is used
-++ return null;
-++ } else {
-++ return SecuritySupport.class.getClassLoader();
-++ }
-++ } // findClassLoader():ClassLoader
-++
-++ private SecuritySupport() {
-++ }
-++}
-+--- src/com/sun/org/apache/xalan/internal/res/XSLMessages.java 2013-04-16 14:28:09.324150042 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLMessages.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -22,68 +22,72 @@
-+ */
-+ package com.sun.org.apache.xalan.internal.res;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.util.ListResourceBundle;
-+
-+ import com.sun.org.apache.xpath.internal.res.XPATHMessages;
-+
-+ /**
-+- * Sets things up for issuing error messages. This class is misnamed, and
-+- * should be called XalanMessages, or some such.
-++ * Sets things up for issuing error messages. This class is misnamed, and should
-++ * be called XalanMessages, or some such.
-++ *
-+ * @xsl.usage internal
-+ */
-+-public class XSLMessages extends XPATHMessages
-+-{
-++public class XSLMessages extends XPATHMessages {
-+
-+- /** The language specific resource object for Xalan messages. */
-+- private static ListResourceBundle XSLTBundle = null;
-+-
-+- /** The class name of the Xalan error message string table. */
-+- private static final String XSLT_ERROR_RESOURCES =
-+- "com.sun.org.apache.xalan.internal.res.XSLTErrorResources";
-+-
-+- /**
-+- * Creates a message from the specified key and replacement
-+- * arguments, localized to the given locale.
-+- *
-+- * @param msgKey The key for the message text.
-+- * @param args The arguments to be used as replacement text
-+- * in the message created.
-+- *
-+- * @return The formatted message string.
-+- */
-+- public static final String createMessage(String msgKey, Object args[]) //throws Exception
-+- {
-+- if (XSLTBundle == null)
-+- XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES);
-+-
-+- if (XSLTBundle != null)
-++ /**
-++ * The language specific resource object for Xalan messages.
-++ */
-++ private static ListResourceBundle XSLTBundle = null;
-++ /**
-++ * The class name of the Xalan error message string table.
-++ */
-++ private static final String XSLT_ERROR_RESOURCES =
-++ "com.sun.org.apache.xalan.internal.res.XSLTErrorResources";
-++
-++ /**
-++ * Creates a message from the specified key and replacement arguments,
-++ * localized to the given locale.
-++ *
-++ * @param msgKey The key for the message text.
-++ * @param args The arguments to be used as replacement text in the message
-++ * created.
-++ *
-++ * @return The formatted message string.
-++ */
-++ public static String createMessage(String msgKey, Object args[]) //throws Exception
-+ {
-+- return createMsg(XSLTBundle, msgKey, args);
-++ if (XSLTBundle == null) {
-++ XSLTBundle = SecuritySupport.getResourceBundle(XSLT_ERROR_RESOURCES);
-++ }
-++
-++ if (XSLTBundle != null) {
-++ return createMsg(XSLTBundle, msgKey, args);
-++ } else {
-++ return "Could not load any resource bundles.";
-++ }
-+ }
-+- else
-+- return "Could not load any resource bundles.";
-+- }
-+-
-+- /**
-+- * Creates a message from the specified key and replacement
-+- * arguments, localized to the given locale.
-+- *
-+- * @param msgKey The key for the message text.
-+- * @param args The arguments to be used as replacement text
-+- * in the message created.
-+- *
-+- * @return The formatted warning string.
-+- */
-+- public static final String createWarning(String msgKey, Object args[]) //throws Exception
-+- {
-+- if (XSLTBundle == null)
-+- XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES);
-+
-+- if (XSLTBundle != null)
-++ /**
-++ * Creates a message from the specified key and replacement arguments,
-++ * localized to the given locale.
-++ *
-++ * @param msgKey The key for the message text.
-++ * @param args The arguments to be used as replacement text in the message
-++ * created.
-++ *
-++ * @return The formatted warning string.
-++ */
-++ public static String createWarning(String msgKey, Object args[]) //throws Exception
-+ {
-+- return createMsg(XSLTBundle, msgKey, args);
-++ if (XSLTBundle == null) {
-++ XSLTBundle = SecuritySupport.getResourceBundle(XSLT_ERROR_RESOURCES);
-++ }
-++
-++ if (XSLTBundle != null) {
-++ return createMsg(XSLTBundle, msgKey, args);
-++ } else {
-++ return "Could not load any resource bundles.";
-++ }
-+ }
-+- else
-+- return "Could not load any resource bundles.";
-+- }
-+ }
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java 2013-04-16 14:28:09.328150105 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -2410,68 +2410,4 @@
-+ public static final String QUERY_HEADER = "MUSTER ";
-+
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+ }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+-}
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java 2013-04-16 14:28:09.332150170 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -2409,69 +2409,4 @@
-+ * @deprecated */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("es", "ES"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+ }
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java 2013-04-16 14:28:09.332150170 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -2410,68 +2410,4 @@
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+ }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+-}
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java 2013-04-16 14:28:09.336150235 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -2409,69 +2409,4 @@
-+ * @deprecated */
-+ public static final String QUERY_HEADER = "MODELLO ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("it", "IT"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+ }
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java 2013-04-16 14:28:09.336150235 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -2410,68 +2410,4 @@
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+ }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+-}
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java 2013-04-16 14:28:09.324150042 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java 2013-04-16 14:29:26.549394382 +0100
-+@@ -1446,68 +1446,4 @@
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+ }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+-}
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java 2013-04-16 14:28:09.340150299 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -2409,69 +2409,4 @@
-+ * @deprecated */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("ko", "KR"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+ }
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java 2013-04-16 14:28:09.340150299 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -2409,69 +2409,4 @@
-+ * @deprecated */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("zh", "CN"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "\u65e0\u6cd5\u88c5\u5165\u4efb\u4f55\u8d44\u6e90\u5305\u3002", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+ }
-+--- src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java 2013-04-16 14:28:09.344150364 +0100
-++++ src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -2409,69 +2409,4 @@
-+ * @deprecated */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XSLTErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XSLTErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("zh", "TW"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+-
-+ }
-+--- src/com/sun/org/apache/xalan/internal/utils/ConfigurationError.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/xalan/internal/utils/ConfigurationError.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -0,0 +1,61 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2001-2004 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++/*
-++ * $Id: ObjectFactory.java,v 1.2.4.1 2005/09/15 02:39:54 jeffsuttor Exp $
-++ */
-++
-++package com.sun.org.apache.xalan.internal.utils;
-++
-++/**
-++ * A configuration error. This was an internal class in ObjectFactory previously
-++ */
-++public final class ConfigurationError
-++ extends Error {
-++
-++ //
-++ // Data
-++ //
-++
-++ /** Exception. */
-++ private Exception exception;
-++
-++ //
-++ // Constructors
-++ //
-++
-++ /**
-++ * Construct a new instance with the specified detail string and
-++ * exception.
-++ */
-++ ConfigurationError(String msg, Exception x) {
-++ super(msg);
-++ this.exception = x;
-++ } // <init>(String,Exception)
-++
-++ //
-++ // methods
-++ //
-++
-++ /** Returns the exception associated to this error. */
-++ public Exception getException() {
-++ return exception;
-++ } // getException():Exception
-++
-++} // class ConfigurationError
-+--- src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -0,0 +1,659 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2001-2004 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++/*
-++ * $Id: ObjectFactory.java,v 1.2.4.1 2005/09/15 02:39:54 jeffsuttor Exp $
-++ */
-++
-++package com.sun.org.apache.xalan.internal.utils;
-++
-++import java.io.InputStream;
-++import java.io.IOException;
-++import java.io.File;
-++import java.io.FileInputStream;
-++
-++import java.util.Properties;
-++import java.io.BufferedReader;
-++import java.io.InputStreamReader;
-++
-++/**
-++ * This class is duplicated for each JAXP subpackage so keep it in sync.
-++ * It is package private and therefore is not exposed as part of the JAXP
-++ * API.
-++ * <p>
-++ * This code is designed to implement the JAXP 1.1 spec pluggability
-++ * feature and is designed to run on JDK version 1.1 and
-++ * later, and to compile on JDK 1.2 and onward.
-++ * The code also runs both as part of an unbundled jar file and
-++ * when bundled as part of the JDK.
-++ * <p>
-++ * This class was moved from the <code>javax.xml.parsers.ObjectFactory</code>
-++ * class and modified to be used as a general utility for creating objects
-++ * dynamically.
-++ *
-++ * @version $Id: ObjectFactory.java,v 1.11 2010-11-01 04:34:25 joehw Exp $
-++ */
-++public class ObjectFactory {
-++
-++ //
-++ // Constants
-++ //
-++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal";
-++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal";
-++
-++ // name of default properties file to look for in JDK's jre/lib directory
-++ private static final String DEFAULT_PROPERTIES_FILENAME =
-++ "xalan.properties";
-++
-++ private static final String SERVICES_PATH = "META-INF/services/";
-++
-++ /** Set to true for debugging */
-++ private static final boolean DEBUG = false;
-++
-++ /** cache the contents of the xalan.properties file.
-++ * Until an attempt has been made to read this file, this will
-++ * be null; if the file does not exist or we encounter some other error
-++ * during the read, this will be empty.
-++ */
-++ private static Properties fXalanProperties = null;
-++
-++ /***
-++ * Cache the time stamp of the xalan.properties file so
-++ * that we know if it's been modified and can invalidate
-++ * the cache when necessary.
-++ */
-++ private static long fLastModified = -1;
-++
-++ //
-++ // Public static methods
-++ //
-++
-++ /**
-++ * Finds the implementation Class object in the specified order. The
-++ * specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return instance of factory, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ public static Object createObject(String factoryId, String fallbackClassName)
-++ throws ConfigurationError {
-++ return createObject(factoryId, null, fallbackClassName);
-++ } // createObject(String,String):Object
-++
-++ /**
-++ * Finds the implementation Class object in the specified order. The
-++ * specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return instance of factory, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param propertiesFilename The filename in the $java.home/lib directory
-++ * of the properties file. If none specified,
-++ * ${java.home}/lib/xalan.properties will be used.
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ static Object createObject(String factoryId,
-++ String propertiesFilename,
-++ String fallbackClassName)
-++ throws ConfigurationError
-++ {
-++ Class factoryClass = lookUpFactoryClass(factoryId,
-++ propertiesFilename,
-++ fallbackClassName);
-++
-++ if (factoryClass == null) {
-++ throw new ConfigurationError(
-++ "Provider for " + factoryId + " cannot be found", null);
-++ }
-++
-++ try{
-++ Object instance = factoryClass.newInstance();
-++ if (DEBUG) debugPrintln("created new instance of factory " + factoryId);
-++ return instance;
-++ } catch (Exception x) {
-++ throw new ConfigurationError(
-++ "Provider for factory " + factoryId
-++ + " could not be instantiated: " + x, x);
-++ }
-++ } // createObject(String,String,String):Object
-++
-++ /**
-++ * Finds the implementation Class object in the specified order. The
-++ * specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return Class object of factory, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param propertiesFilename The filename in the $java.home/lib directory
-++ * of the properties file. If none specified,
-++ * ${java.home}/lib/xalan.properties will be used.
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ public static Class lookUpFactoryClass(String factoryId)
-++ throws ConfigurationError
-++ {
-++ return lookUpFactoryClass(factoryId, null, null);
-++ } // lookUpFactoryClass(String):Class
-++
-++ /**
-++ * Finds the implementation Class object in the specified order. The
-++ * specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return Class object that provides factory service, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param propertiesFilename The filename in the $java.home/lib directory
-++ * of the properties file. If none specified,
-++ * ${java.home}/lib/xalan.properties will be used.
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ public static Class lookUpFactoryClass(String factoryId,
-++ String propertiesFilename,
-++ String fallbackClassName)
-++ throws ConfigurationError
-++ {
-++ String factoryClassName = lookUpFactoryClassName(factoryId,
-++ propertiesFilename,
-++ fallbackClassName);
-++ ClassLoader cl = findClassLoader();
-++
-++ if (factoryClassName == null) {
-++ factoryClassName = fallbackClassName;
-++ }
-++
-++ // assert(className != null);
-++ try{
-++ Class providerClass = findProviderClass(factoryClassName,
-++ cl,
-++ true);
-++ if (DEBUG) debugPrintln("created new instance of " + providerClass +
-++ " using ClassLoader: " + cl);
-++ return providerClass;
-++ } catch (ClassNotFoundException x) {
-++ throw new ConfigurationError(
-++ "Provider " + factoryClassName + " not found", x);
-++ } catch (Exception x) {
-++ throw new ConfigurationError(
-++ "Provider "+factoryClassName+" could not be instantiated: "+x,
-++ x);
-++ }
-++ } // lookUpFactoryClass(String,String,String):Class
-++
-++ /**
-++ * Finds the name of the required implementation class in the specified
-++ * order. The specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return name of class that provides factory service, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param propertiesFilename The filename in the $java.home/lib directory
-++ * of the properties file. If none specified,
-++ * ${java.home}/lib/xalan.properties will be used.
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ static String lookUpFactoryClassName(String factoryId,
-++ String propertiesFilename,
-++ String fallbackClassName)
-++ {
-++ // Use the system property first
-++ try {
-++ String systemProp = SecuritySupport.getSystemProperty(factoryId);
-++ if (systemProp != null) {
-++ if (DEBUG) debugPrintln("found system property, value=" + systemProp);
-++ return systemProp;
-++ }
-++ } catch (SecurityException se) {
-++ // Ignore and continue w/ next location
-++ }
-++
-++ // Try to read from propertiesFilename, or
-++ // $java.home/lib/xalan.properties
-++ String factoryClassName = null;
-++ // no properties file name specified; use
-++ // $JAVA_HOME/lib/xalan.properties:
-++ if (propertiesFilename == null) {
-++ File propertiesFile = null;
-++ boolean propertiesFileExists = false;
-++ try {
-++ String javah = SecuritySupport.getSystemProperty("java.home");
-++ propertiesFilename = javah + File.separator +
-++ "lib" + File.separator + DEFAULT_PROPERTIES_FILENAME;
-++ propertiesFile = new File(propertiesFilename);
-++ propertiesFileExists = SecuritySupport.getFileExists(propertiesFile);
-++ } catch (SecurityException e) {
-++ // try again...
-++ fLastModified = -1;
-++ fXalanProperties = null;
-++ }
-++
-++ synchronized (ObjectFactory.class) {
-++ boolean loadProperties = false;
-++ FileInputStream fis = null;
-++ try {
-++ // file existed last time
-++ if(fLastModified >= 0) {
-++ if(propertiesFileExists &&
-++ (fLastModified < (fLastModified = SecuritySupport.getLastModified(propertiesFile)))) {
-++ loadProperties = true;
-++ } else {
-++ // file has stopped existing...
-++ if(!propertiesFileExists) {
-++ fLastModified = -1;
-++ fXalanProperties = null;
-++ } // else, file wasn't modified!
-++ }
-++ } else {
-++ // file has started to exist:
-++ if(propertiesFileExists) {
-++ loadProperties = true;
-++ fLastModified = SecuritySupport.getLastModified(propertiesFile);
-++ } // else, nothing's changed
-++ }
-++ if(loadProperties) {
-++ // must never have attempted to read xalan.properties
-++ // before (or it's outdeated)
-++ fXalanProperties = new Properties();
-++ fis = SecuritySupport.getFileInputStream(propertiesFile);
-++ fXalanProperties.load(fis);
-++ }
-++ } catch (Exception x) {
-++ fXalanProperties = null;
-++ fLastModified = -1;
-++ // assert(x instanceof FileNotFoundException
-++ // || x instanceof SecurityException)
-++ // In both cases, ignore and continue w/ next location
-++ }
-++ finally {
-++ // try to close the input stream if one was opened.
-++ if (fis != null) {
-++ try {
-++ fis.close();
-++ }
-++ // Ignore the exception.
-++ catch (IOException exc) {}
-++ }
-++ }
-++ }
-++ if(fXalanProperties != null) {
-++ factoryClassName = fXalanProperties.getProperty(factoryId);
-++ }
-++ } else {
-++ FileInputStream fis = null;
-++ try {
-++ fis = SecuritySupport.getFileInputStream(new File(propertiesFilename));
-++ Properties props = new Properties();
-++ props.load(fis);
-++ factoryClassName = props.getProperty(factoryId);
-++ } catch (Exception x) {
-++ // assert(x instanceof FileNotFoundException
-++ // || x instanceof SecurityException)
-++ // In both cases, ignore and continue w/ next location
-++ }
-++ finally {
-++ // try to close the input stream if one was opened.
-++ if (fis != null) {
-++ try {
-++ fis.close();
-++ }
-++ // Ignore the exception.
-++ catch (IOException exc) {}
-++ }
-++ }
-++ }
-++ if (factoryClassName != null) {
-++ if (DEBUG) debugPrintln("found in " + propertiesFilename + ", value="
-++ + factoryClassName);
-++ return factoryClassName;
-++ }
-++
-++ // Try Jar Service Provider Mechanism
-++ return findJarServiceProviderName(factoryId);
-++ } // lookUpFactoryClass(String,String):String
-++
-++ //
-++ // Private static methods
-++ //
-++
-++ /** Prints a message to standard error if debugging is enabled. */
-++ private static void debugPrintln(String msg) {
-++ if (DEBUG) {
-++ System.err.println("JAXP: " + msg);
-++ }
-++ } // debugPrintln(String)
-++
-++ /**
-++ * Figure out which ClassLoader to use. For JDK 1.2 and later use
-++ * the context ClassLoader.
-++ */
-++ public static ClassLoader findClassLoader()
-++ throws ConfigurationError
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ //this will ensure bootclassloader is used
-++ return null;
-++ }
-++
-++ // Figure out which ClassLoader to use for loading the provider
-++ // class. If there is a Context ClassLoader then use it.
-++ ClassLoader context = SecuritySupport.getContextClassLoader();
-++ ClassLoader system = SecuritySupport.getSystemClassLoader();
-++
-++ ClassLoader chain = system;
-++ while (true) {
-++ if (context == chain) {
-++ // Assert: we are on JDK 1.1 or we have no Context ClassLoader
-++ // or any Context ClassLoader in chain of system classloader
-++ // (including extension ClassLoader) so extend to widest
-++ // ClassLoader (always look in system ClassLoader if Xalan
-++ // is in boot/extension/system classpath and in current
-++ // ClassLoader otherwise); normal classloaders delegate
-++ // back to system ClassLoader first so this widening doesn't
-++ // change the fact that context ClassLoader will be consulted
-++ ClassLoader current = ObjectFactory.class.getClassLoader();
-++
-++ chain = system;
-++ while (true) {
-++ if (current == chain) {
-++ // Assert: Current ClassLoader in chain of
-++ // boot/extension/system ClassLoaders
-++ return system;
-++ }
-++ if (chain == null) {
-++ break;
-++ }
-++ chain = SecuritySupport.getParentClassLoader(chain);
-++ }
-++
-++ // Assert: Current ClassLoader not in chain of
-++ // boot/extension/system ClassLoaders
-++ return current;
-++ }
-++
-++ if (chain == null) {
-++ // boot ClassLoader reached
-++ break;
-++ }
-++
-++ // Check for any extension ClassLoaders in chain up to
-++ // boot ClassLoader
-++ chain = SecuritySupport.getParentClassLoader(chain);
-++ }
-++
-++ // Assert: Context ClassLoader not in chain of
-++ // boot/extension/system ClassLoaders
-++ return context;
-++ } // findClassLoader():ClassLoader
-++
-++ /**
-++ * Create an instance of a class using the same classloader for the ObjectFactory by default
-++ * or bootclassloader when Security Manager is in place
-++ */
-++ public static Object newInstance(String className, boolean doFallback)
-++ throws ConfigurationError
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ return newInstance(className, null, doFallback);
-++ } else {
-++ return newInstance(className,
-++ findClassLoader (), doFallback);
-++ }
-++ }
-++
-++ /**
-++ * Create an instance of a class using the specified ClassLoader
-++ */
-++ static Object newInstance(String className, ClassLoader cl,
-++ boolean doFallback)
-++ throws ConfigurationError
-++ {
-++ // assert(className != null);
-++ try{
-++ Class providerClass = findProviderClass(className, cl, doFallback);
-++ Object instance = providerClass.newInstance();
-++ if (DEBUG) debugPrintln("created new instance of " + providerClass +
-++ " using ClassLoader: " + cl);
-++ return instance;
-++ } catch (ClassNotFoundException x) {
-++ throw new ConfigurationError(
-++ "Provider " + className + " not found", x);
-++ } catch (Exception x) {
-++ throw new ConfigurationError(
-++ "Provider " + className + " could not be instantiated: " + x,
-++ x);
-++ }
-++ }
-++
-++ /**
-++ * Find a Class using the same classloader for the ObjectFactory by default
-++ * or bootclassloader when Security Manager is in place
-++ */
-++ public static Class findProviderClass(String className, boolean doFallback)
-++ throws ClassNotFoundException, ConfigurationError
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ return Class.forName(className);
-++ } else {
-++ return findProviderClass (className,
-++ findClassLoader (), doFallback);
-++ }
-++ }
-++
-++ /**
-++ * Find a Class using the specified ClassLoader
-++ */
-++ static Class findProviderClass(String className, ClassLoader cl,
-++ boolean doFallback)
-++ throws ClassNotFoundException, ConfigurationError
-++ {
-++ //throw security exception if the calling thread is not allowed to access the
-++ //class. Restrict the access to the package classes as specified in java.security policy.
-++ SecurityManager security = System.getSecurityManager();
-++ try{
-++ if (security != null){
-++ if (className.startsWith(XALAN_INTERNAL) ||
-++ className.startsWith(XERCES_INTERNAL)) {
-++ cl = null;
-++ } else {
-++ final int lastDot = className.lastIndexOf(".");
-++ String packageName = className;
-++ if (lastDot != -1) packageName = className.substring(0, lastDot);
-++ security.checkPackageAccess(packageName);
-++ }
-++ }
-++ }catch(SecurityException e){
-++ throw e;
-++ }
-++
-++ Class providerClass;
-++ if (cl == null) {
-++ // XXX Use the bootstrap ClassLoader. There is no way to
-++ // load a class using the bootstrap ClassLoader that works
-++ // in both JDK 1.1 and Java 2. However, this should still
-++ // work b/c the following should be true:
-++ //
-++ // (cl == null) iff current ClassLoader == null
-++ //
-++ // Thus Class.forName(String) will use the current
-++ // ClassLoader which will be the bootstrap ClassLoader.
-++ providerClass = Class.forName(className);
-++ } else {
-++ try {
-++ providerClass = cl.loadClass(className);
-++ } catch (ClassNotFoundException x) {
-++ if (doFallback) {
-++ // Fall back to current classloader
-++ ClassLoader current = ObjectFactory.class.getClassLoader();
-++ if (current == null) {
-++ providerClass = Class.forName(className);
-++ } else if (cl != current) {
-++ cl = current;
-++ providerClass = cl.loadClass(className);
-++ } else {
-++ throw x;
-++ }
-++ } else {
-++ throw x;
-++ }
-++ }
-++ }
-++
-++ return providerClass;
-++ }
-++
-++ /**
-++ * Find the name of service provider using Jar Service Provider Mechanism
-++ *
-++ * @return instance of provider class if found or null
-++ */
-++ private static String findJarServiceProviderName(String factoryId)
-++ {
-++ String serviceId = SERVICES_PATH + factoryId;
-++ InputStream is = null;
-++
-++ // First try the Context ClassLoader
-++ ClassLoader cl = findClassLoader();
-++
-++ is = SecuritySupport.getResourceAsStream(cl, serviceId);
-++
-++ // If no provider found then try the current ClassLoader
-++ if (is == null) {
-++ ClassLoader current = ObjectFactory.class.getClassLoader();
-++ if (cl != current) {
-++ cl = current;
-++ is = SecuritySupport.getResourceAsStream(cl, serviceId);
-++ }
-++ }
-++
-++ if (is == null) {
-++ // No provider found
-++ return null;
-++ }
-++
-++ if (DEBUG) debugPrintln("found jar resource=" + serviceId +
-++ " using ClassLoader: " + cl);
-++
-++ // Read the service provider name in UTF-8 as specified in
-++ // the jar spec. Unfortunately this fails in Microsoft
-++ // VJ++, which does not implement the UTF-8
-++ // encoding. Theoretically, we should simply let it fail in
-++ // that case, since the JVM is obviously broken if it
-++ // doesn't support such a basic standard. But since there
-++ // are still some users attempting to use VJ++ for
-++ // development, we have dropped in a fallback which makes a
-++ // second attempt using the platform's default encoding. In
-++ // VJ++ this is apparently ASCII, which is a subset of
-++ // UTF-8... and since the strings we'll be reading here are
-++ // also primarily limited to the 7-bit ASCII range (at
-++ // least, in English versions), this should work well
-++ // enough to keep us on the air until we're ready to
-++ // officially decommit from VJ++. [Edited comment from
-++ // jkesselm]
-++ BufferedReader rd;
-++ try {
-++ rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
-++ } catch (java.io.UnsupportedEncodingException e) {
-++ rd = new BufferedReader(new InputStreamReader(is));
-++ }
-++
-++ String factoryClassName = null;
-++ try {
-++ // XXX Does not handle all possible input as specified by the
-++ // Jar Service Provider specification
-++ factoryClassName = rd.readLine();
-++ } catch (IOException x) {
-++ // No provider found
-++ return null;
-++ }
-++ finally {
-++ try {
-++ // try to close the reader.
-++ rd.close();
-++ }
-++ // Ignore the exception.
-++ catch (IOException exc) {}
-++ }
-++
-++ if (factoryClassName != null &&
-++ ! "".equals(factoryClassName)) {
-++ if (DEBUG) debugPrintln("found in resource, value="
-++ + factoryClassName);
-++
-++ // Note: here we do not want to fall back to the current
-++ // ClassLoader because we want to avoid the case where the
-++ // resource file was found using one ClassLoader and the
-++ // provider class was instantiated using a different one.
-++ return factoryClassName;
-++ }
-++
-++ // No provider found
-++ return null;
-++ }
-++
-++} // class ObjectFactory
-+--- src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/xalan/internal/utils/SecuritySupport.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -0,0 +1,206 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2002-2004 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++/*
-++ * $Id: SecuritySupport.java,v 1.1.2.1 2005/08/01 02:08:48 jeffsuttor Exp $
-++ */
-++
-++package com.sun.org.apache.xalan.internal.utils;
-++
-++import java.io.File;
-++import java.io.FileInputStream;
-++import java.io.FileNotFoundException;
-++import java.io.InputStream;
-++
-++import java.security.AccessController;
-++import java.security.PrivilegedAction;
-++import java.security.PrivilegedActionException;
-++import java.security.PrivilegedExceptionAction;
-++import java.util.ListResourceBundle;
-++import java.util.Locale;
-++import java.util.MissingResourceException;
-++import java.util.ResourceBundle;
-++
-++/**
-++ * This class is duplicated for each subpackage so keep it in sync. It is
-++ * package private and therefore is not exposed as part of any API.
-++ *
-++ * @xerces.internal
-++ */
-++public final class SecuritySupport {
-++
-++ private static final SecuritySupport securitySupport = new SecuritySupport();
-++
-++ /**
-++ * Return an instance of this class.
-++ */
-++ public static SecuritySupport getInstance() {
-++ return securitySupport;
-++ }
-++
-++ static ClassLoader getContextClassLoader() {
-++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ try {
-++ cl = Thread.currentThread().getContextClassLoader();
-++ } catch (SecurityException ex) {
-++ }
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ static ClassLoader getSystemClassLoader() {
-++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ try {
-++ cl = ClassLoader.getSystemClassLoader();
-++ } catch (SecurityException ex) {
-++ }
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ static ClassLoader getParentClassLoader(final ClassLoader cl) {
-++ return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader parent = null;
-++ try {
-++ parent = cl.getParent();
-++ } catch (SecurityException ex) {
-++ }
-++
-++ // eliminate loops in case of the boot
-++ // ClassLoader returning itself as a parent
-++ return (parent == cl) ? null : parent;
-++ }
-++ });
-++ }
-++
-++ public static String getSystemProperty(final String propName) {
-++ return (String) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return System.getProperty(propName);
-++ }
-++ });
-++ }
-++
-++ public static String getSystemProperty(final String propName, final String def) {
-++ return (String) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return System.getProperty(propName, def);
-++ }
-++ });
-++ }
-++
-++ static FileInputStream getFileInputStream(final File file)
-++ throws FileNotFoundException {
-++ try {
-++ return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-++ public Object run() throws FileNotFoundException {
-++ return new FileInputStream(file);
-++ }
-++ });
-++ } catch (PrivilegedActionException e) {
-++ throw (FileNotFoundException)e.getException();
-++ }
-++ }
-++
-++ /**
-++ * Return resource using the same classloader for the ObjectFactory by
-++ * default or bootclassloader when Security Manager is in place
-++ */
-++ public static InputStream getResourceAsStream(final String name) {
-++ if (System.getSecurityManager()!=null) {
-++ return getResourceAsStream(null, name);
-++ } else {
-++ return getResourceAsStream(ObjectFactory.findClassLoader(), name);
-++ }
-++ }
-++
-++ public static InputStream getResourceAsStream(final ClassLoader cl,
-++ final String name) {
-++ return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ InputStream ris;
-++ if (cl == null) {
-++ ris = Object.class.getResourceAsStream("/"+name);
-++ } else {
-++ ris = cl.getResourceAsStream(name);
-++ }
-++ return ris;
-++ }
-++ });
-++ }
-++
-++ /**
-++ * Gets a resource bundle using the specified base name, the default locale, and the caller's class loader.
-++ * @param bundle the base name of the resource bundle, a fully qualified class name
-++ * @return a resource bundle for the given base name and the default locale
-++ */
-++ public static ListResourceBundle getResourceBundle(String bundle) {
-++ return getResourceBundle(bundle, Locale.getDefault());
-++ }
-++
-++ /**
-++ * Gets a resource bundle using the specified base name and locale, and the caller's class loader.
-++ * @param bundle the base name of the resource bundle, a fully qualified class name
-++ * @param locale the locale for which a resource bundle is desired
-++ * @return a resource bundle for the given base name and locale
-++ */
-++ public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) {
-++ return AccessController.doPrivileged(new PrivilegedAction<ListResourceBundle>() {
-++ public ListResourceBundle run() {
-++ try {
-++ return (ListResourceBundle)ResourceBundle.getBundle(bundle, locale);
-++ } catch (MissingResourceException e) {
-++ try {
-++ return (ListResourceBundle)ResourceBundle.getBundle(bundle, new Locale("en", "US"));
-++ } catch (MissingResourceException e2) {
-++ throw new MissingResourceException(
-++ "Could not load any resource bundle by " + bundle, bundle, "");
-++ }
-++ }
-++ }
-++ });
-++ }
-++
-++ public static boolean getFileExists(final File f) {
-++ return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return f.exists() ? Boolean.TRUE : Boolean.FALSE;
-++ }
-++ })).booleanValue();
-++ }
-++
-++ static long getLastModified(final File f) {
-++ return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return new Long(f.lastModified());
-++ }
-++ })).longValue();
-++ }
-++
-++
-++ private SecuritySupport() {
-++ }
-++}
-+--- src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2013-04-16 14:28:09.344150364 +0100
-++++ src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -22,6 +22,8 @@
-+ */
-+ package com.sun.org.apache.xalan.internal.xslt;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-++
-+ import java.io.File;
-+ import java.io.FileWriter;
-+ import java.io.PrintWriter;
-+@@ -569,7 +571,7 @@
-+ // Grab java version for later use
-+ try
-+ {
-+- String javaVersion = System.getProperty("java.version");
-++ String javaVersion = SecuritySupport.getSystemProperty("java.version");
-+
-+ h.put("java.version", javaVersion);
-+ }
-+@@ -588,7 +590,7 @@
-+ {
-+
-+ // This is present in all JVM's
-+- String cp = System.getProperty("java.class.path");
-++ String cp = SecuritySupport.getSystemProperty("java.class.path");
-+
-+ h.put("java.class.path", cp);
-+
-+@@ -598,7 +600,7 @@
-+ h.put(FOUNDCLASSES + "java.class.path", classpathJars);
-+
-+ // Also check for JDK 1.2+ type classpaths
-+- String othercp = System.getProperty("sun.boot.class.path");
-++ String othercp = SecuritySupport.getSystemProperty("sun.boot.class.path");
-+
-+ if (null != othercp)
-+ {
-+@@ -612,7 +614,7 @@
-+
-+ //@todo NOTE: We don't actually search java.ext.dirs for
-+ // *.jar files therein! This should be updated
-+- othercp = System.getProperty("java.ext.dirs");
-++ othercp = SecuritySupport.getSystemProperty("java.ext.dirs");
-+
-+ if (null != othercp)
-+ {
-+--- src/com/sun/org/apache/xalan/internal/xslt/Process.java 2013-04-16 14:28:09.348150428 +0100
-++++ src/com/sun/org/apache/xalan/internal/xslt/Process.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -55,6 +55,7 @@
-+ import com.sun.org.apache.xalan.internal.Version;
-+ import com.sun.org.apache.xalan.internal.res.XSLMessages;
-+ import com.sun.org.apache.xalan.internal.res.XSLTErrorResources;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ //J2SE does not support Xalan interpretive
-+ /*
-+@@ -178,7 +179,7 @@
-+ java.io.PrintWriter diagnosticsWriter = new PrintWriter(System.err, true);
-+ java.io.PrintWriter dumpWriter = diagnosticsWriter;
-+ ResourceBundle resbundle =
-+- (XSLMessages.loadResourceBundle(
-++ (SecuritySupport.getResourceBundle(
-+ com.sun.org.apache.xml.internal.utils.res.XResourceBundle.ERROR_RESOURCES));
-+ String flavor = "s2s";
-+
-+--- src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java 2013-04-16 14:28:09.380150944 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -400,7 +400,7 @@
-+ }
-+ }
-+ catch (TypeCheckError e) {
-+- reportError(ERROR, new ErrorMsg(e));
-++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ }
-+
-+@@ -420,7 +420,7 @@
-+ }
-+ catch (IOException e) {
-+ if (_xsltc.debug()) e.printStackTrace();
-+- reportError(ERROR,new ErrorMsg(e));
-++ reportError(ERROR,new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ catch (SAXException e) {
-+ Throwable ex = e.getException();
-+@@ -428,15 +428,15 @@
-+ e.printStackTrace();
-+ if (ex != null) ex.printStackTrace();
-+ }
-+- reportError(ERROR, new ErrorMsg(e));
-++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ catch (CompilerException e) {
-+ if (_xsltc.debug()) e.printStackTrace();
-+- reportError(ERROR, new ErrorMsg(e));
-++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ catch (Exception e) {
-+ if (_xsltc.debug()) e.printStackTrace();
-+- reportError(ERROR, new ErrorMsg(e));
-++ reportError(ERROR, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ return null;
-+ }
-+--- src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java 2013-04-16 14:28:09.400151266 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -947,7 +947,12 @@
-+ "Cannot set the feature ''{0}'' on this TransformerFactory."},
-+
-+ {ErrorMsg.JAXP_SECUREPROCESSING_FEATURE,
-+- "FEATURE_SECURE_PROCESSING: Cannot set the feature to false when security manager is present."}
-++ "FEATURE_SECURE_PROCESSING: Cannot set the feature to false when security manager is present."},
-++
-++ {ErrorMsg.DESERIALIZE_TRANSLET_ERR, "When Java security is enabled, " +
-++ "support for deserializing TemplatesImpl is disabled." +
-++ "This can be overridden by setting the jdk.xml.enableTemplatesImplDeserialization" +
-++ " system property to true."}
-+ };
-+ }
-+ }
-+--- src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java 2013-04-16 14:28:09.420151588 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -23,6 +23,7 @@
-+
-+ package com.sun.org.apache.xalan.internal.xsltc.compiler.util;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.text.MessageFormat;
-+ import java.util.Locale;
-+ import java.util.ResourceBundle;
-+@@ -46,6 +47,8 @@
-+ Object[] _params = null;
-+ private boolean _isWarningError;
-+
-++ Throwable _cause;
-++
-+ // Compiler error messages
-+ public static final String MULTIPLE_STYLESHEET_ERR = "MULTIPLE_STYLESHEET_ERR";
-+ public static final String TEMPLATE_REDEF_ERR = "TEMPLATE_REDEF_ERR";
-+@@ -157,6 +160,8 @@
-+ public static final String INVALID_NCNAME_ERR = "INVALID_NCNAME_ERR";
-+ public static final String INVALID_METHOD_IN_OUTPUT = "INVALID_METHOD_IN_OUTPUT";
-+
-++ public static final String DESERIALIZE_TRANSLET_ERR = "DESERIALIZE_TEMPLATES_ERR";
-++
-+ // All error messages are localized and are stored in resource bundles.
-+ // This array and the following 4 strings are read from that bundle.
-+ private static ResourceBundle _bundle;
-+@@ -167,7 +172,7 @@
-+ public final static String RUNTIME_ERROR_KEY = "RUNTIME_ERROR_KEY";
-+
-+ static {
-+- _bundle = ResourceBundle.getBundle(
-++ _bundle = SecuritySupport.getResourceBundle(
-+ "com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMessages",
-+ Locale.getDefault());
-+ }
-+@@ -177,10 +182,11 @@
-+ _line = 0;
-+ }
-+
-+- public ErrorMsg(Throwable e) {
-+- _code = null;
-++ public ErrorMsg(String code, Throwable e) {
-++ _code = code;
-+ _message = e.getMessage();
-+ _line = 0;
-++ _cause = e;
-+ }
-+
-+ public ErrorMsg(String message, int line) {
-+@@ -232,6 +238,10 @@
-+ _params[1] = param2;
-+ }
-+
-++ public Throwable getCause() {
-++ return _cause;
-++ }
-++
-+ private String getFileName(SyntaxTreeNode node) {
-+ Stylesheet stylesheet = node.getStylesheet();
-+ if (stylesheet != null)
-+--- src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java 2013-04-16 14:28:09.428151717 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -26,6 +26,7 @@
-+ import java.util.StringTokenizer;
-+
-+ import com.sun.org.apache.bcel.internal.generic.Type;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import com.sun.org.apache.xalan.internal.xsltc.compiler.Constants;
-+ import com.sun.org.apache.xml.internal.utils.XML11Char;
-+
-+@@ -37,7 +38,7 @@
-+ private static char filesep;
-+
-+ static {
-+- String temp = System.getProperty("file.separator", "/");
-++ String temp = SecuritySupport.getSystemProperty("file.separator", "/");
-+ filesep = temp.charAt(0);
-+ }
-+
-+--- src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java 2013-04-16 14:28:09.396151201 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -41,10 +41,12 @@
-+ import java.util.jar.Manifest;
-+
-+ import com.sun.org.apache.bcel.internal.classfile.JavaClass;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
-+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util;
-+ import com.sun.org.apache.xml.internal.dtm.DTM;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import org.xml.sax.InputSource;
-+ import org.xml.sax.XMLReader;
-+
-+@@ -257,7 +259,7 @@
-+ return compile(input, _className);
-+ }
-+ catch (IOException e) {
-+- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
-++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ return false;
-+ }
-+ }
-+@@ -276,7 +278,7 @@
-+ return compile(input, name);
-+ }
-+ catch (IOException e) {
-+- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
-++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ return false;
-+ }
-+ }
-+@@ -361,11 +363,11 @@
-+ }
-+ catch (Exception e) {
-+ /*if (_debug)*/ e.printStackTrace();
-+- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
-++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ catch (Error e) {
-+ if (_debug) e.printStackTrace();
-+- _parser.reportError(Constants.FATAL, new ErrorMsg(e));
-++ _parser.reportError(Constants.FATAL, new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR, e));
-+ }
-+ finally {
-+ _reader = null; // reset this here to be sure it is not re-used
-+@@ -573,7 +575,7 @@
-+ */
-+ public boolean setDestDirectory(String dstDirName) {
-+ final File dir = new File(dstDirName);
-+- if (dir.exists() || dir.mkdirs()) {
-++ if (SecuritySupport.getFileExists(dir) || dir.mkdirs()) {
-+ _destDir = dir;
-+ return true;
-+ }
-+@@ -746,7 +748,7 @@
-+ String parentDir = outFile.getParent();
-+ if (parentDir != null) {
-+ File parentFile = new File(parentDir);
-+- if (!parentFile.exists())
-++ if (!SecuritySupport.getFileExists(parentFile))
-+ parentFile.mkdirs();
-+ }
-+ }
-+--- src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java 2013-04-16 14:28:09.444151975 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -32,6 +32,7 @@
-+ import com.sun.org.apache.xalan.internal.xsltc.TransletException;
-+ import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
-+ import com.sun.org.apache.xml.internal.utils.StringComparable;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ /**
-+ * Base class for sort records containing application specific sort keys
-+@@ -111,7 +112,7 @@
-+ try {
-+ // -- W. Eliot Kimber (eliot@isogen.com)
-+ colFactClassname =
-+- System.getProperty("com.sun.org.apache.xalan.internal.xsltc.COLLATOR_FACTORY");
-++ SecuritySupport.getSystemProperty("com.sun.org.apache.xalan.internal.xsltc.COLLATOR_FACTORY");
-+ }
-+ catch (SecurityException e) {
-+ // If we can't read the propery, just use default collator
-+--- src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java 2013-04-16 14:28:09.448152039 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java 2013-04-16 14:29:26.553394447 +0100
-+@@ -23,6 +23,7 @@
-+
-+ package com.sun.org.apache.xalan.internal.xsltc.runtime;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.text.DecimalFormat;
-+ import java.text.DecimalFormatSymbols;
-+ import java.text.FieldPosition;
-+@@ -1518,7 +1519,7 @@
-+
-+ static {
-+ String resource = "com.sun.org.apache.xalan.internal.xsltc.runtime.ErrorMessages";
-+- m_bundle = ResourceBundle.getBundle(resource);
-++ m_bundle = SecuritySupport.getResourceBundle(resource);
-+ }
-+
-+ /**
-+--- src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java 2013-04-16 14:28:09.456152168 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -23,6 +23,7 @@
-+
-+ package com.sun.org.apache.xalan.internal.xsltc.runtime.output;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.io.BufferedWriter;
-+ import java.io.IOException;
-+ import java.io.Writer;
-+@@ -36,7 +37,7 @@
-+
-+ static {
-+ // Set a larger buffer size for Solaris
-+- final String osName = System.getProperty("os.name");
-++ final String osName = SecuritySupport.getSystemProperty("os.name");
-+ if (osName.equalsIgnoreCase("solaris")) {
-+ BUFFER_SIZE = 32 * KB;
-+ }
-+--- src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java 2013-04-16 14:28:09.460152233 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -42,6 +42,7 @@
-+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
-+ import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
-+ import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ /**
-+ * @author Morten Jorgensen
-+@@ -51,6 +52,8 @@
-+ */
-+ public final class TemplatesImpl implements Templates, Serializable {
-+ static final long serialVersionUID = 673094361519270707L;
-++ public final static String DESERIALIZE_TRANSLET = "jdk.xml.enableTemplatesImplDeserialization";
-++
-+ /**
-+ * Name of the superclass of all translets. This is needed to
-+ * determine which, among all classes comprising a translet,
-+@@ -181,6 +184,15 @@
-+ private void readObject(ObjectInputStream is)
-+ throws IOException, ClassNotFoundException
-+ {
-++ SecurityManager security = System.getSecurityManager();
-++ if (security != null){
-++ String temp = SecuritySupport.getSystemProperty(DESERIALIZE_TRANSLET);
-++ if (temp == null || !(temp.length()==0 || temp.equalsIgnoreCase("true"))) {
-++ ErrorMsg err = new ErrorMsg(ErrorMsg.DESERIALIZE_TRANSLET_ERR);
-++ throw new UnsupportedOperationException(err.toString());
-++ }
-++ }
-++
-+ is.defaultReadObject();
-+ if (is.readBoolean()) {
-+ _uriResolver = (URIResolver) is.readObject();
-+--- src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java 2013-04-16 14:28:09.460152233 +0100
-++++ src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -69,7 +69,7 @@
-+ import com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC;
-+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
-+ import com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager;
-+-
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ import org.xml.sax.InputSource;
-+ import org.xml.sax.XMLFilter;
-+@@ -839,8 +839,14 @@
-+ // Check that the transformation went well before returning
-+ if (bytecodes == null) {
-+
-+- ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
-+- TransformerConfigurationException exc = new TransformerConfigurationException(err.toString());
-++ Vector errs = xsltc.getErrors();
-++ ErrorMsg err = null;
-++ if (errs != null) {
-++ err = (ErrorMsg)errs.get(errs.size()-1);
-++ } else {
-++ err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
-++ }
-++ TransformerConfigurationException exc = new TransformerConfigurationException(err.toString(), err.getCause());
-+
-+ // Pass compiler errors to the error listener
-+ if (_errorListener != null) {
-+@@ -1187,7 +1193,7 @@
-+ // Find the parent directory of the translet.
-+ String transletParentDir = transletFile.getParent();
-+ if (transletParentDir == null)
-+- transletParentDir = System.getProperty("user.dir");
-++ transletParentDir = SecuritySupport.getSystemProperty("user.dir");
-+
-+ File transletParentFile = new File(transletParentDir);
-+
-+--- src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java 2013-04-16 14:28:09.472152426 +0100
-++++ src/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,10 +20,10 @@
-+
-+
-+ package com.sun.org.apache.xerces.internal.dom;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+-import java.util.PropertyResourceBundle;
-+
-+ /**
-+ * Used to format DOM error messages, using the system locale.
-+@@ -31,6 +31,7 @@
-+ * @xerces.internal
-+ *
-+ * @author Sandy Gao, IBM
-++ * @version $Id: DOMMessageFormatter.java,v 1.6 2010-11-01 04:39:38 joehw Exp $
-+ */
-+ public class DOMMessageFormatter {
-+ public static final String DOM_DOMAIN = "http://www.w3.org/dom/DOMTR";
-+@@ -122,13 +123,13 @@
-+ */
-+ public static void init(){
-+ if (locale != null) {
-+- domResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages", locale);
-+- serResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages", locale);
-+- xmlResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
-++ domResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages", locale);
-++ serResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages", locale);
-++ xmlResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
-+ }else{
-+- domResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages");
-+- serResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages");
-+- xmlResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
-++ domResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.DOMMessages");
-++ serResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSerializerMessages");
-++ xmlResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
-+ }
-+ }
-+
-+--- src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java 2013-04-16 14:28:09.532153393 +0100
-++++ src/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,6 +20,7 @@
-+
-+ package com.sun.org.apache.xerces.internal.impl.dv;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.ResourceBundle;
-+ import java.util.PropertyResourceBundle;
-+ import java.util.MissingResourceException;
-+@@ -34,6 +35,7 @@
-+ *
-+ * @author Sandy Gao, IBM
-+ *
-++ * @version $Id: DatatypeException.java,v 1.6 2010-11-01 04:39:43 joehw Exp $
-+ */
-+ public class DatatypeException extends Exception {
-+
-+@@ -84,7 +86,7 @@
-+ */
-+ public String getMessage() {
-+ ResourceBundle resourceBundle = null;
-+- resourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
-++ resourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
-+ if (resourceBundle == null)
-+ throw new MissingResourceException("Property file not found!", "com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", key);
-+
-+--- src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java 2013-04-16 14:28:09.552153715 +0100
-++++ src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,12 +20,11 @@
-+
-+ package com.sun.org.apache.xerces.internal.impl.msg;
-+
-++import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+-import java.util.PropertyResourceBundle;
-+-
-+-import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-+
-+ /**
-+ * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for
-+@@ -71,12 +70,12 @@
-+
-+ if (fResourceBundle == null || locale != fLocale) {
-+ if (locale != null) {
-+- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
-++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale);
-+ // memorize the most-recent locale
-+ fLocale = locale;
-+ }
-+ if (fResourceBundle == null)
-+- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
-++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages");
-+ }
-+
-+ // format message
-+--- src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2013-04-16 14:28:09.504152942 +0100
-++++ src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -52,6 +52,7 @@
-+ import com.sun.org.apache.xerces.internal.xni.XNIException;
-+ import com.sun.org.apache.xerces.internal.xni.parser.*;
-+ import com.sun.org.apache.xerces.internal.impl.Constants;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import com.sun.xml.internal.stream.Entity;
-+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
-+
-+@@ -1811,7 +1812,7 @@
-+ // get the user.dir property
-+ String userDir = "";
-+ try {
-+- userDir = System.getProperty("user.dir");
-++ userDir = SecuritySupport.getSystemProperty("user.dir");
-+ }
-+ catch (SecurityException se) {
-+ }
-+@@ -2155,9 +2156,6 @@
-+ private static String expandSystemIdStrictOff(String systemId, String baseSystemId)
-+ throws URI.MalformedURIException {
-+
-+- systemId = escapeNonUSAscii(systemId);
-+- baseSystemId = escapeNonUSAscii(baseSystemId);
-+-
-+ URI systemURI = new URI(systemId, true);
-+ // If it's already an absolute one, return it
-+ if (systemURI.isAbsoluteURI()) {
-+@@ -2623,64 +2621,6 @@
-+
-+ } // fixURI(String):String
-+
-+- /**
-+- * Escape invalid URI characters.
-+- *
-+- * Passed a URI that contains invalid characters (like spaces, non-ASCII Unicode characters, and the like),
-+- * this function percent encodes the invalid characters per the URI specification (i.e., as a sequence of
-+- * %-encoded UTF-8 octets).
-+- *
-+- * N.B. There are two problems. If the URI contains a '%' character, that might be an indication that
-+- * the URI has already been escaped by the author, or it might be an invalid '%'. In the former case,
-+- * it's important not to escape it, or we'll wind up with invalid, doubly-escaped '%'s. In the latter,
-+- * the URI is broken if we don't encode it. Similarly, a '#' character might be the start of a fragment
-+- * identifier or it might be an invalid '#'.
-+- *
-+- * Given that the former is vastly more likely than the latter in each case (most users are familiar with
-+- * the magic status of '%' and '#' and they occur relatively infrequently in filenames, and if the user parses
-+- * a proper Java File, we will already have %-escaped the URI), we simply assume that %'s and #'s are legit.
-+- *
-+- * Very rarely, we may be wrong. If so, tell the user to fix the clearly broken URI.
-+- */
-+- protected static String escapeNonUSAscii(String str) {
-+- if (str == null) {
-+- return str;
-+- }
-+-
-+- // get UTF-8 bytes for the string
-+- StringBuffer buffer = new StringBuffer();
-+- byte[] bytes = null;
-+- byte b;
-+- try {
-+- bytes = str.getBytes("UTF-8");
-+- } catch (java.io.UnsupportedEncodingException e) {
-+- // should never happen
-+- return str;
-+- }
-+- int len = bytes.length;
-+- int ch;
-+-
-+- // for each byte
-+- for (int i = 0; i < len; i++) {
-+- b = bytes[i];
-+- // for non-ascii character: make it positive, then escape
-+- if (b < 0) {
-+- ch = b + 256;
-+- buffer.append('%');
-+- buffer.append(gHexChs[ch >> 4]);
-+- buffer.append(gHexChs[ch & 0xf]);
-+- }
-+- else if (b != '%' && b != '#' && gNeedEscaping[b]) {
-+- buffer.append('%');
-+- buffer.append(gAfterEscaping1[b]);
-+- buffer.append(gAfterEscaping2[b]);
-+- }
-+- else {
-+- buffer.append((char)b);
-+- }
-+- }
-+- return buffer.toString();
-+- }
-+
-+ //
-+ // Package visible methods
-+--- src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java 2013-04-16 14:28:09.560153844 +0100
-++++ src/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,6 +20,7 @@
-+
-+ package com.sun.org.apache.xerces.internal.impl.xpath.regex;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+@@ -94,10 +95,10 @@
-+ public void setLocale(Locale locale) {
-+ try {
-+ if (locale != null) {
-+- this.resources = ResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message", locale);
-++ this.resources = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message", locale);
-+ }
-+ else {
-+- this.resources = ResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message");
-++ this.resources = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.xpath.regex.message");
-+ }
-+ }
-+ catch (MissingResourceException mre) {
-+--- src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java 2013-04-16 14:28:09.572154037 +0100
-++++ src/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,11 +20,11 @@
-+
-+ package com.sun.org.apache.xerces.internal.impl.xs;
-+
-++import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+-import java.util.PropertyResourceBundle;
-+-import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-+
-+
-+ /**
-+@@ -34,6 +34,7 @@
-+ * @xerces.internal
-+ *
-+ * @author Elena Litani, IBM
-++ * @version $Id: XSMessageFormatter.java,v 1.6 2010-11-01 04:39:55 joehw Exp $
-+ */
-+ public class XSMessageFormatter implements MessageFormatter {
-+ /**
-+@@ -66,12 +67,12 @@
-+
-+ if (fResourceBundle == null || locale != fLocale) {
-+ if (locale != null) {
-+- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", locale);
-++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", locale);
-+ // memorize the most-recent locale
-+ fLocale = locale;
-+ }
-+ if (fResourceBundle == null)
-+- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
-++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages");
-+ }
-+
-+ String msg = fResourceBundle.getString(key);
-+--- src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java 2013-04-16 14:28:09.600154489 +0100
-++++ src/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,15 +20,16 @@
-+
-+ package com.sun.org.apache.xerces.internal.jaxp.validation;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+-import java.util.PropertyResourceBundle;
-+
-+ /**
-+ * <p>Used to format JAXP Validation API error messages using a specified locale.</p>
-+ *
-+ * @author Michael Glavassevich, IBM
-++ * @version $Id: JAXPValidationMessageFormatter.java,v 1.5 2010-11-01 04:40:08 joehw Exp $
-+ */
-+ final class JAXPValidationMessageFormatter {
-+
-+@@ -54,11 +55,11 @@
-+ ResourceBundle resourceBundle = null;
-+ if (locale != null) {
-+ resourceBundle =
-+- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages", locale);
-++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages", locale);
-+ }
-+ else {
-+ resourceBundle =
-+- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages");
-++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.JAXPValidationMessages");
-+ }
-+
-+ // format message
-+--- src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java 2013-04-16 14:28:09.616154746 +0100
-++++ src/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,15 +20,16 @@
-+
-+ package com.sun.org.apache.xerces.internal.util;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+-import java.util.PropertyResourceBundle;
-+ import java.util.ResourceBundle;
-+
-+ /**
-+ * <p>Used to format JAXP 1.3 Datatype API error messages using a specified locale.</p>
-+ *
-+ * @author Neeraj Bajaj, Sun Microsystems
-++ * @version $Id: DatatypeMessageFormatter.java,v 1.6 2010-11-01 04:40:14 joehw Exp $
-+ */
-+ public class DatatypeMessageFormatter {
-+
-+@@ -56,11 +57,11 @@
-+ ResourceBundle resourceBundle = null;
-+ if (locale != null) {
-+ resourceBundle =
-+- PropertyResourceBundle.getBundle(BASE_NAME, locale);
-++ SecuritySupport.getResourceBundle(BASE_NAME, locale);
-+ }
-+ else {
-+ resourceBundle =
-+- PropertyResourceBundle.getBundle(BASE_NAME);
-++ SecuritySupport.getResourceBundle(BASE_NAME);
-+ }
-+
-+ // format message
-+--- src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java 2013-04-16 14:28:09.620154811 +0100
-++++ src/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -19,16 +19,17 @@
-+ */
-+ package com.sun.org.apache.xerces.internal.util;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+-import java.util.PropertyResourceBundle;
-+
-+ /**
-+ * Used to format SAX error messages using a specified locale.
-+ *
-+ * @author Michael Glavassevich, IBM
-+ *
-++ * @version $Id: SAXMessageFormatter.java,v 1.6 2010-11-01 04:40:14 joehw Exp $
-+ */
-+ public class SAXMessageFormatter {
-+
-+@@ -54,11 +55,11 @@
-+ ResourceBundle resourceBundle = null;
-+ if (locale != null) {
-+ resourceBundle =
-+- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages", locale);
-++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages", locale);
-+ }
-+ else {
-+ resourceBundle =
-+- PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages");
-++ SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.SAXMessages");
-+ }
-+
-+ // format message
-+--- src/com/sun/org/apache/xerces/internal/util/SecurityManager.java 2013-04-16 14:28:09.620154811 +0100
-++++ src/com/sun/org/apache/xerces/internal/util/SecurityManager.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -61,6 +61,8 @@
-+
-+ package com.sun.org.apache.xerces.internal.util;
-+ import com.sun.org.apache.xerces.internal.impl.Constants;
-++import java.security.AccessController;
-++import java.security.PrivilegedAction;
-+ /**
-+ * This class is a container for parser settings that relate to
-+ * security, or more specifically, it is intended to be used to prevent denial-of-service
-+@@ -77,6 +79,7 @@
-+ *
-+ * @author Neil Graham, IBM
-+ *
-++ * @version $Id: SecurityManager.java,v 1.5 2010-11-01 04:40:14 joehw Exp $
-+ */
-+ public final class SecurityManager {
-+
-+@@ -176,41 +179,48 @@
-+
-+ private void readSystemProperties(){
-+
-+- //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT
-+- try {
-+- String value = System.getProperty(Constants.ENTITY_EXPANSION_LIMIT);
-+- if(value != null && !value.equals("")){
-+- entityExpansionLimit = Integer.parseInt(value);
-+- if (entityExpansionLimit < 0)
-+- entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
-+- }
-+- else
-+- entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
-+- }catch(Exception ex){}
-+-
-+- try {
-+- String value = System.getProperty(Constants.MAX_OCCUR_LIMIT);
-+- if(value != null && !value.equals("")){
-+- maxOccurLimit = Integer.parseInt(value);
-+- if (maxOccurLimit < 0)
-+- maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
-+- }
-+- else
-+- maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
-+- }catch(Exception ex){}
-+-
-+- try {
-+- String value = System.getProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT);
-+- if(value != null && !value.equals("")){
-+- fElementAttributeLimit = Integer.parseInt(value);
-+- if ( fElementAttributeLimit < 0)
-+- fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
-+- }
-+- else
-+- fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
-++ //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT
-++ try {
-++ String value = getSystemProperty(Constants.ENTITY_EXPANSION_LIMIT);
-++ if(value != null && !value.equals("")){
-++ entityExpansionLimit = Integer.parseInt(value);
-++ if (entityExpansionLimit < 0)
-++ entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
-++ }
-++ else
-++ entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
-++ }catch(Exception ex){}
-++
-++ try {
-++ String value = getSystemProperty(Constants.MAX_OCCUR_LIMIT);
-++ if(value != null && !value.equals("")){
-++ maxOccurLimit = Integer.parseInt(value);
-++ if (maxOccurLimit < 0)
-++ maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
-++ }
-++ else
-++ maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
-++ }catch(Exception ex){}
-++
-++ try {
-++ String value = getSystemProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT);
-++ if(value != null && !value.equals("")){
-++ fElementAttributeLimit = Integer.parseInt(value);
-++ if ( fElementAttributeLimit < 0)
-++ fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
-++ }
-++ else
-++ fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
-+
-+ }catch(Exception ex){}
-+
-+ }
-+
-++ private String getSystemProperty(final String propName) {
-++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
-++ public String run() {
-++ return System.getProperty(propName);
-++ }
-++ });
-++ }
-+ } // class SecurityManager
-+--- src/com/sun/org/apache/xerces/internal/utils/ConfigurationError.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/xerces/internal/utils/ConfigurationError.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -0,0 +1,58 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2001-2005 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++
-++package com.sun.org.apache.xerces.internal.utils;
-++
-++/**
-++ * A configuration error. This was an internal class in ObjectFactory previously
-++ */
-++public final class ConfigurationError
-++ extends Error {
-++
-++ //
-++ // Data
-++ //
-++
-++ /** Exception. */
-++ private Exception exception;
-++
-++ //
-++ // Constructors
-++ //
-++
-++ /**
-++ * Construct a new instance with the specified detail string and
-++ * exception.
-++ */
-++ ConfigurationError(String msg, Exception x) {
-++ super(msg);
-++ this.exception = x;
-++ } // <init>(String,Exception)
-++
-++ //
-++ // methods
-++ //
-++
-++ /** Returns the exception associated to this error. */
-++ public Exception getException() {
-++ return exception;
-++ } // getException():Exception
-++
-++} // class ConfigurationError
-+--- src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -0,0 +1,436 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2001-2005 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++
-++package com.sun.org.apache.xerces.internal.utils;
-++
-++import java.io.InputStream;
-++import java.io.IOException;
-++import java.io.File;
-++import java.io.FileInputStream;
-++
-++import java.util.Properties;
-++import java.io.BufferedReader;
-++import java.io.InputStreamReader;
-++
-++/**
-++ * This class is duplicated for each JAXP subpackage so keep it in sync.
-++ * It is package private and therefore is not exposed as part of the JAXP
-++ * API.
-++ * <p>
-++ * This code is designed to implement the JAXP 1.1 spec pluggability
-++ * feature and is designed to run on JDK version 1.1 and
-++ * later, and to compile on JDK 1.2 and onward.
-++ * The code also runs both as part of an unbundled jar file and
-++ * when bundled as part of the JDK.
-++ * <p>
-++ *
-++ * @version $Id: ObjectFactory.java,v 1.6 2010/04/23 01:44:34 joehw Exp $
-++ */
-++public final class ObjectFactory {
-++
-++ //
-++ // Constants
-++ //
-++ private static final String DEFAULT_INTERNAL_CLASSES = "com.sun.org.apache.";
-++
-++ // name of default properties file to look for in JDK's jre/lib directory
-++ private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties";
-++
-++ /** Set to true for debugging */
-++ private static final boolean DEBUG = isDebugEnabled();
-++
-++ /**
-++ * Default columns per line.
-++ */
-++ private static final int DEFAULT_LINE_LENGTH = 80;
-++
-++ /** cache the contents of the xerces.properties file.
-++ * Until an attempt has been made to read this file, this will
-++ * be null; if the file does not exist or we encounter some other error
-++ * during the read, this will be empty.
-++ */
-++ private static Properties fXercesProperties = null;
-++
-++ /***
-++ * Cache the time stamp of the xerces.properties file so
-++ * that we know if it's been modified and can invalidate
-++ * the cache when necessary.
-++ */
-++ private static long fLastModified = -1;
-++
-++ //
-++ // static methods
-++ //
-++
-++ /**
-++ * Finds the implementation Class object in the specified order. The
-++ * specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return Class object of factory, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ public static Object createObject(String factoryId, String fallbackClassName)
-++ throws ConfigurationError {
-++ return createObject(factoryId, null, fallbackClassName);
-++ } // createObject(String,String):Object
-++
-++ /**
-++ * Finds the implementation Class object in the specified order. The
-++ * specified order is the following:
-++ * <ol>
-++ * <li>query the system property using <code>System.getProperty</code>
-++ * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-++ * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-++ * <li>use fallback classname
-++ * </ol>
-++ *
-++ * @return Class object of factory, never null
-++ *
-++ * @param factoryId Name of the factory to find, same as
-++ * a property name
-++ * @param propertiesFilename The filename in the $java.home/lib directory
-++ * of the properties file. If none specified,
-++ * ${java.home}/lib/xerces.properties will be used.
-++ * @param fallbackClassName Implementation class name, if nothing else
-++ * is found. Use null to mean no fallback.
-++ *
-++ * @exception ObjectFactory.ConfigurationError
-++ */
-++ public static Object createObject(String factoryId,
-++ String propertiesFilename,
-++ String fallbackClassName)
-++ throws ConfigurationError
-++ {
-++ if (DEBUG) debugPrintln("debug is on");
-++
-++ ClassLoader cl = findClassLoader();
-++
-++ // Use the system property first
-++ try {
-++ String systemProp = SecuritySupport.getSystemProperty(factoryId);
-++ if (systemProp != null && systemProp.length() > 0) {
-++ if (DEBUG) debugPrintln("found system property, value=" + systemProp);
-++ return newInstance(systemProp, cl, true);
-++ }
-++ } catch (SecurityException se) {
-++ // Ignore and continue w/ next location
-++ }
-++
-++ // JAXP specific change
-++ // always use fallback class to avoid the expense of constantly
-++ // "stat"ing a non-existent "xerces.properties" and jar SPI entry
-++ // see CR 6400863: Expensive creating of SAX parser in Mustang
-++ if (fallbackClassName == null) {
-++ throw new ConfigurationError(
-++ "Provider for " + factoryId + " cannot be found", null);
-++ }
-++
-++ if (DEBUG) debugPrintln("using fallback, value=" + fallbackClassName);
-++ return newInstance(fallbackClassName, cl, true);
-++
-++ } // createObject(String,String,String):Object
-++
-++ //
-++ // Private static methods
-++ //
-++
-++ /** Returns true if debug has been enabled. */
-++ private static boolean isDebugEnabled() {
-++ try {
-++ String val = SecuritySupport.getSystemProperty("xerces.debug");
-++ // Allow simply setting the prop to turn on debug
-++ return (val != null && (!"false".equals(val)));
-++ }
-++ catch (SecurityException se) {}
-++ return false;
-++ } // isDebugEnabled()
-++
-++ /** Prints a message to standard error if debugging is enabled. */
-++ private static void debugPrintln(String msg) {
-++ if (DEBUG) {
-++ System.err.println("XERCES: " + msg);
-++ }
-++ } // debugPrintln(String)
-++
-++ /**
-++ * Figure out which ClassLoader to use. For JDK 1.2 and later use
-++ * the context ClassLoader.
-++ */
-++ public static ClassLoader findClassLoader()
-++ throws ConfigurationError
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ //this will ensure bootclassloader is used
-++ return null;
-++ }
-++ // Figure out which ClassLoader to use for loading the provider
-++ // class. If there is a Context ClassLoader then use it.
-++ ClassLoader context = SecuritySupport.getContextClassLoader();
-++ ClassLoader system = SecuritySupport.getSystemClassLoader();
-++
-++ ClassLoader chain = system;
-++ while (true) {
-++ if (context == chain) {
-++ // Assert: we are on JDK 1.1 or we have no Context ClassLoader
-++ // or any Context ClassLoader in chain of system classloader
-++ // (including extension ClassLoader) so extend to widest
-++ // ClassLoader (always look in system ClassLoader if Xerces
-++ // is in boot/extension/system classpath and in current
-++ // ClassLoader otherwise); normal classloaders delegate
-++ // back to system ClassLoader first so this widening doesn't
-++ // change the fact that context ClassLoader will be consulted
-++ ClassLoader current = ObjectFactory.class.getClassLoader();
-++
-++ chain = system;
-++ while (true) {
-++ if (current == chain) {
-++ // Assert: Current ClassLoader in chain of
-++ // boot/extension/system ClassLoaders
-++ return system;
-++ }
-++ if (chain == null) {
-++ break;
-++ }
-++ chain = SecuritySupport.getParentClassLoader(chain);
-++ }
-++
-++ // Assert: Current ClassLoader not in chain of
-++ // boot/extension/system ClassLoaders
-++ return current;
-++ }
-++
-++ if (chain == null) {
-++ // boot ClassLoader reached
-++ break;
-++ }
-++
-++ // Check for any extension ClassLoaders in chain up to
-++ // boot ClassLoader
-++ chain = SecuritySupport.getParentClassLoader(chain);
-++ };
-++
-++ // Assert: Context ClassLoader not in chain of
-++ // boot/extension/system ClassLoaders
-++ return context;
-++ } // findClassLoader():ClassLoader
-++
-++ /**
-++ * Create an instance of a class using the same classloader for the ObjectFactory by default
-++ * or bootclassloader when Security Manager is in place
-++ */
-++ public static Object newInstance(String className, boolean doFallback)
-++ throws ConfigurationError
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ return newInstance(className, null, doFallback);
-++ } else {
-++ return newInstance(className,
-++ findClassLoader (), doFallback);
-++ }
-++ }
-++
-++ /**
-++ * Create an instance of a class using the specified ClassLoader
-++ */
-++ public static Object newInstance(String className, ClassLoader cl,
-++ boolean doFallback)
-++ throws ConfigurationError
-++ {
-++ // assert(className != null);
-++ try{
-++ Class providerClass = findProviderClass(className, cl, doFallback);
-++ Object instance = providerClass.newInstance();
-++ if (DEBUG) debugPrintln("created new instance of " + providerClass +
-++ " using ClassLoader: " + cl);
-++ return instance;
-++ } catch (ClassNotFoundException x) {
-++ throw new ConfigurationError(
-++ "Provider " + className + " not found", x);
-++ } catch (Exception x) {
-++ throw new ConfigurationError(
-++ "Provider " + className + " could not be instantiated: " + x,
-++ x);
-++ }
-++ }
-++
-++ /**
-++ * Find a Class using the same classloader for the ObjectFactory by default
-++ * or bootclassloader when Security Manager is in place
-++ */
-++ public static Class findProviderClass(String className, boolean doFallback)
-++ throws ClassNotFoundException, ConfigurationError
-++ {
-++ if (System.getSecurityManager()!=null) {
-++ return Class.forName(className);
-++ } else {
-++ return findProviderClass (className,
-++ findClassLoader (), doFallback);
-++ }
-++ }
-++ /**
-++ * Find a Class using the specified ClassLoader
-++ */
-++ public static Class findProviderClass(String className, ClassLoader cl,
-++ boolean doFallback)
-++ throws ClassNotFoundException, ConfigurationError
-++ {
-++ //throw security exception if the calling thread is not allowed to access the package
-++ //restrict the access to package as speicified in java.security policy
-++ SecurityManager security = System.getSecurityManager();
-++ if (security != null) {
-++ if (className.startsWith(DEFAULT_INTERNAL_CLASSES)) {
-++ cl = null;
-++ } else {
-++ final int lastDot = className.lastIndexOf(".");
-++ String packageName = className;
-++ if (lastDot != -1) packageName = className.substring(0, lastDot);
-++ security.checkPackageAccess(packageName);
-++ }
-++ }
-++ Class providerClass;
-++ if (cl == null) {
-++ //use the bootstrap ClassLoader.
-++ providerClass = Class.forName(className);
-++ } else {
-++ try {
-++ providerClass = cl.loadClass(className);
-++ } catch (ClassNotFoundException x) {
-++ if (doFallback) {
-++ // Fall back to current classloader
-++ ClassLoader current = ObjectFactory.class.getClassLoader();
-++ if (current == null) {
-++ providerClass = Class.forName(className);
-++ } else if (cl != current) {
-++ cl = current;
-++ providerClass = cl.loadClass(className);
-++ } else {
-++ throw x;
-++ }
-++ } else {
-++ throw x;
-++ }
-++ }
-++ }
-++
-++ return providerClass;
-++ }
-++
-++ /*
-++ * Try to find provider using Jar Service Provider Mechanism
-++ *
-++ * @return instance of provider class if found or null
-++ */
-++ private static Object findJarServiceProvider(String factoryId)
-++ throws ConfigurationError
-++ {
-++ String serviceId = "META-INF/services/" + factoryId;
-++ InputStream is = null;
-++
-++ // First try the Context ClassLoader
-++ ClassLoader cl = findClassLoader();
-++
-++ is = SecuritySupport.getResourceAsStream(cl, serviceId);
-++
-++ // If no provider found then try the current ClassLoader
-++ if (is == null) {
-++ ClassLoader current = ObjectFactory.class.getClassLoader();
-++ if (cl != current) {
-++ cl = current;
-++ is = SecuritySupport.getResourceAsStream(cl, serviceId);
-++ }
-++ }
-++
-++ if (is == null) {
-++ // No provider found
-++ return null;
-++ }
-++
-++ if (DEBUG) debugPrintln("found jar resource=" + serviceId +
-++ " using ClassLoader: " + cl);
-++
-++ // Read the service provider name in UTF-8 as specified in
-++ // the jar spec. Unfortunately this fails in Microsoft
-++ // VJ++, which does not implement the UTF-8
-++ // encoding. Theoretically, we should simply let it fail in
-++ // that case, since the JVM is obviously broken if it
-++ // doesn't support such a basic standard. But since there
-++ // are still some users attempting to use VJ++ for
-++ // development, we have dropped in a fallback which makes a
-++ // second attempt using the platform's default encoding. In
-++ // VJ++ this is apparently ASCII, which is a subset of
-++ // UTF-8... and since the strings we'll be reading here are
-++ // also primarily limited to the 7-bit ASCII range (at
-++ // least, in English versions), this should work well
-++ // enough to keep us on the air until we're ready to
-++ // officially decommit from VJ++. [Edited comment from
-++ // jkesselm]
-++ BufferedReader rd;
-++ try {
-++ rd = new BufferedReader(new InputStreamReader(is, "UTF-8"), DEFAULT_LINE_LENGTH);
-++ } catch (java.io.UnsupportedEncodingException e) {
-++ rd = new BufferedReader(new InputStreamReader(is), DEFAULT_LINE_LENGTH);
-++ }
-++
-++ String factoryClassName = null;
-++ try {
-++ // XXX Does not handle all possible input as specified by the
-++ // Jar Service Provider specification
-++ factoryClassName = rd.readLine();
-++ } catch (IOException x) {
-++ // No provider found
-++ return null;
-++ }
-++ finally {
-++ try {
-++ // try to close the reader.
-++ rd.close();
-++ }
-++ // Ignore the exception.
-++ catch (IOException exc) {}
-++ }
-++
-++ if (factoryClassName != null &&
-++ ! "".equals(factoryClassName)) {
-++ if (DEBUG) debugPrintln("found in resource, value="
-++ + factoryClassName);
-++
-++ // Note: here we do not want to fall back to the current
-++ // ClassLoader because we want to avoid the case where the
-++ // resource file was found using one ClassLoader and the
-++ // provider class was instantiated using a different one.
-++ return newInstance(factoryClassName, cl, false);
-++ }
-++
-++ // No provider found
-++ return null;
-++ }
-++
-++} // class ObjectFactory
-+--- src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/com/sun/org/apache/xerces/internal/utils/SecuritySupport.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -0,0 +1,199 @@
-++/*
-++ * reserved comment block
-++ * DO NOT REMOVE OR ALTER!
-++ */
-++/*
-++ * Copyright 2002,2004 The Apache Software Foundation.
-++ *
-++ * 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
-++ *
-++ * Unless required by applicable law or agreed to in writing, software
-++ * distributed under the License is distributed on an "AS IS" BASIS,
-++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-++ * See the License for the specific language governing permissions and
-++ * limitations under the License.
-++ */
-++
-++package com.sun.org.apache.xerces.internal.utils;
-++
-++import java.io.File;
-++import java.io.FileInputStream;
-++import java.io.FileNotFoundException;
-++import java.io.InputStream;
-++
-++import java.security.AccessController;
-++import java.security.PrivilegedAction;
-++import java.security.PrivilegedActionException;
-++import java.security.PrivilegedExceptionAction;
-++import java.util.Locale;
-++import java.util.MissingResourceException;
-++import java.util.PropertyResourceBundle;
-++import java.util.ResourceBundle;
-++
-++/**
-++ * This class is duplicated for each subpackage so keep it in sync.
-++ * It is package private and therefore is not exposed as part of any API.
-++ *
-++ * @xerces.internal
-++ */
-++public final class SecuritySupport {
-++
-++ private static final SecuritySupport securitySupport = new SecuritySupport();
-++
-++ /**
-++ * Return an instance of this class.
-++ */
-++ public static SecuritySupport getInstance() {
-++ return securitySupport;
-++ }
-++
-++ static ClassLoader getContextClassLoader() {
-++ return (ClassLoader)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ try {
-++ cl = Thread.currentThread().getContextClassLoader();
-++ } catch (SecurityException ex) { }
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ static ClassLoader getSystemClassLoader() {
-++ return (ClassLoader)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ try {
-++ cl = ClassLoader.getSystemClassLoader();
-++ } catch (SecurityException ex) {}
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ static ClassLoader getParentClassLoader(final ClassLoader cl) {
-++ return (ClassLoader)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader parent = null;
-++ try {
-++ parent = cl.getParent();
-++ } catch (SecurityException ex) {}
-++
-++ // eliminate loops in case of the boot
-++ // ClassLoader returning itself as a parent
-++ return (parent == cl) ? null : parent;
-++ }
-++ });
-++ }
-++
-++ public static String getSystemProperty(final String propName) {
-++ return (String)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return System.getProperty(propName);
-++ }
-++ });
-++ }
-++
-++ static FileInputStream getFileInputStream(final File file)
-++ throws FileNotFoundException
-++ {
-++ try {
-++ return (FileInputStream)
-++ AccessController.doPrivileged(new PrivilegedExceptionAction() {
-++ public Object run() throws FileNotFoundException {
-++ return new FileInputStream(file);
-++ }
-++ });
-++ } catch (PrivilegedActionException e) {
-++ throw (FileNotFoundException)e.getException();
-++ }
-++ }
-++ /**
-++ * Return resource using the same classloader for the ObjectFactory by default
-++ * or bootclassloader when Security Manager is in place
-++ */
-++ public static InputStream getResourceAsStream(final String name) {
-++ if (System.getSecurityManager()!=null) {
-++ return getResourceAsStream(null, name);
-++ } else {
-++ return getResourceAsStream(ObjectFactory.findClassLoader(), name);
-++ }
-++ }
-++
-++ public static InputStream getResourceAsStream(final ClassLoader cl,
-++ final String name)
-++ {
-++ return (InputStream)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ InputStream ris;
-++ if (cl == null) {
-++ ris = Object.class.getResourceAsStream("/"+name);
-++ } else {
-++ ris = cl.getResourceAsStream(name);
-++ }
-++ return ris;
-++ }
-++ });
-++ }
-++
-++ /**
-++ * Gets a resource bundle using the specified base name, the default locale, and the caller's class loader.
-++ * @param bundle the base name of the resource bundle, a fully qualified class name
-++ * @return a resource bundle for the given base name and the default locale
-++ */
-++ public static ResourceBundle getResourceBundle(String bundle) {
-++ return getResourceBundle(bundle, Locale.getDefault());
-++ }
-++
-++ /**
-++ * Gets a resource bundle using the specified base name and locale, and the caller's class loader.
-++ * @param bundle the base name of the resource bundle, a fully qualified class name
-++ * @param locale the locale for which a resource bundle is desired
-++ * @return a resource bundle for the given base name and locale
-++ */
-++ public static ResourceBundle getResourceBundle(final String bundle, final Locale locale) {
-++ return AccessController.doPrivileged(new PrivilegedAction<ResourceBundle>() {
-++ public ResourceBundle run() {
-++ try {
-++ return PropertyResourceBundle.getBundle(bundle, locale);
-++ } catch (MissingResourceException e) {
-++ try {
-++ return PropertyResourceBundle.getBundle(bundle, new Locale("en", "US"));
-++ } catch (MissingResourceException e2) {
-++ throw new MissingResourceException(
-++ "Could not load any resource bundle by " + bundle, bundle, "");
-++ }
-++ }
-++ }
-++ });
-++ }
-++
-++ static boolean getFileExists(final File f) {
-++ return ((Boolean)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return f.exists() ? Boolean.TRUE : Boolean.FALSE;
-++ }
-++ })).booleanValue();
-++ }
-++
-++ static long getLastModified(final File f) {
-++ return ((Long)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return new Long(f.lastModified());
-++ }
-++ })).longValue();
-++ }
-++
-++ private SecuritySupport () {}
-++}
-+--- src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java 2013-04-16 14:28:09.628154939 +0100
-++++ src/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -20,11 +20,11 @@
-+
-+ package com.sun.org.apache.xerces.internal.xinclude;
-+
-++import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+ import java.util.ResourceBundle;
-+-import java.util.PropertyResourceBundle;
-+-import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-+
-+ // TODO: fix error messages in XIncludeMessages.properties
-+ /**
-+@@ -32,6 +32,7 @@
-+ *
-+ * @author Peter McCracken, IBM
-+ *
-++ * @version $Id: XIncludeMessageFormatter.java,v 1.7 2010-11-01 04:40:18 joehw Exp $
-+ */
-+ public class XIncludeMessageFormatter implements MessageFormatter {
-+
-+@@ -61,12 +62,12 @@
-+
-+ if (fResourceBundle == null || locale != fLocale) {
-+ if (locale != null) {
-+- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages", locale);
-++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages", locale);
-+ // memorize the most-recent locale
-+ fLocale = locale;
-+ }
-+ if (fResourceBundle == null)
-+- fResourceBundle = PropertyResourceBundle.getBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages");
-++ fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XIncludeMessages");
-+ }
-+
-+ String msg = fResourceBundle.getString(key);
-+--- src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java 2013-04-16 14:28:09.636155069 +0100
-++++ src/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -24,6 +24,7 @@
-+ import java.util.ResourceBundle;
-+ import java.util.PropertyResourceBundle;
-+ import com.sun.org.apache.xerces.internal.util.MessageFormatter;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+
-+ /**
-+ * XPointerMessageFormatter provides error messages for the XPointer Framework
-+@@ -31,6 +32,7 @@
-+ *
-+ * @xerces.internal
-+ *
-++ * @version $Id: XPointerMessageFormatter.java,v 1.5 2010-11-01 04:40:26 joehw Exp $
-+ */
-+ class XPointerMessageFormatter implements MessageFormatter {
-+
-+@@ -64,14 +66,14 @@
-+
-+ if (fResourceBundle == null || locale != fLocale) {
-+ if (locale != null) {
-+- fResourceBundle = PropertyResourceBundle.getBundle(
-++ fResourceBundle = SecuritySupport.getResourceBundle(
-+ "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages", locale);
-+ // memorize the most-recent locale
-+ fLocale = locale;
-+ }
-+ if (fResourceBundle == null)
-+- fResourceBundle = PropertyResourceBundle
-+- .getBundle("com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages");
-++ fResourceBundle = SecuritySupport.getResourceBundle(
-++ "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages");
-+ }
-+
-+ String msg = fResourceBundle.getString(key);
-+--- src/com/sun/org/apache/xml/internal/dtm/DTMManager.java 2013-04-16 14:28:09.644155197 +0100
-++++ src/com/sun/org/apache/xml/internal/dtm/DTMManager.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -26,6 +26,7 @@
-+ import com.sun.org.apache.xml.internal.res.XMLMessages;
-+ import com.sun.org.apache.xml.internal.utils.PrefixResolver;
-+ import com.sun.org.apache.xml.internal.utils.XMLStringFactory;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ /**
-+ * A DTMManager instance can be used to create DTM and
-+@@ -358,7 +359,7 @@
-+ {
-+ try
-+ {
-+- debug = System.getProperty("dtm.debug") != null;
-++ debug = SecuritySupport.getSystemProperty("dtm.debug") != null;
-+ }
-+ catch (SecurityException ex){}
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ca.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("ca", "ES"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_cs.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("cs", "CZ"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_de.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("es", "ES"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_fr.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_it.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("it", "IT"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java 2013-04-16 14:28:09.660155456 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources.java 2013-04-16 14:29:26.557394511 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -461,67 +458,4 @@
-+ return msgCopy;
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("ko", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java 2013-04-16 14:28:09.664155519 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sk.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_tr.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("tr", "TR"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_CN.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("zh", "CN"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "\u65e0\u6cd5\u88c5\u5165\u4efb\u4f55\u8d44\u6e90\u5305\u3002", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -24,9 +24,6 @@
-+
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -442,67 +439,4 @@
-+ };
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XMLErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XMLErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XMLErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("zh", "TW"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xml/internal/res/XMLMessages.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/res/XMLMessages.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -22,10 +22,9 @@
-+ */
-+ package com.sun.org.apache.xml.internal.res;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.util.ListResourceBundle;
-+ import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * A utility class for issuing XML error messages.
-+@@ -82,8 +81,9 @@
-+ */
-+ public static final String createXMLMessage(String msgKey, Object args[])
-+ {
-+- if (XMLBundle == null)
-+- XMLBundle = loadResourceBundle(XML_ERROR_RESOURCES);
-++ if (XMLBundle == null) {
-++ XMLBundle = SecuritySupport.getResourceBundle(XML_ERROR_RESOURCES);
-++ }
-+
-+ if (XMLBundle != null)
-+ {
-+@@ -156,61 +156,4 @@
-+ return fmsg;
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className The class name of the resource bundle.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static ListResourceBundle loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+- Locale locale = Locale.getDefault();
-+-
-+- try
-+- {
-+- return (ListResourceBundle)ResourceBundle.getBundle(className, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (ListResourceBundle)ResourceBundle.getBundle(
-+- className, new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles." + className, className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which can be appended to a resource name
-+- */
-+- protected static String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+ }
-+--- src/com/sun/org/apache/xml/internal/resolver/Catalog.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/resolver/Catalog.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -23,6 +23,8 @@
-+
-+ package com.sun.org.apache.xml.internal.resolver;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-++
-+ import java.io.IOException;
-+ import java.io.FileNotFoundException;
-+ import java.io.InputStream;
-+@@ -819,7 +821,7 @@
-+ // tack on a basename because URLs point to files not dirs
-+ catalogCwd = FileURL.makeURL("basename");
-+ } catch (MalformedURLException e) {
-+- String userdir = System.getProperty("user.dir");
-++ String userdir = SecuritySupport.getSystemProperty("user.dir");
-+ userdir.replace('\\', '/');
-+ catalogManager.debug.message(1, "Malformed URL on cwd", userdir);
-+ catalogCwd = null;
-+@@ -1715,7 +1717,7 @@
-+ protected String resolveLocalSystem(String systemId)
-+ throws MalformedURLException, IOException {
-+
-+- String osname = System.getProperty("os.name");
-++ String osname = SecuritySupport.getSystemProperty("os.name");
-+ boolean windows = (osname.indexOf("Windows") >= 0);
-+ Enumeration en = catalogEntries.elements();
-+ while (en.hasMoreElements()) {
-+--- src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -23,6 +23,7 @@
-+
-+ package com.sun.org.apache.xml.internal.resolver;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import java.io.InputStream;
-+
-+ import java.net.URL;
-+@@ -141,8 +142,8 @@
-+
-+ /** Flag to ignore missing property files and/or properties */
-+ private boolean ignoreMissingProperties
-+- = (System.getProperty(pIgnoreMissing) != null
-+- || System.getProperty(pFiles) != null);
-++ = (SecuritySupport.getSystemProperty(pIgnoreMissing) != null
-++ || SecuritySupport.getSystemProperty(pFiles) != null);
-+
-+ /** Holds the resources after they are loaded from the file. */
-+ private ResourceBundle resources;
-+@@ -331,7 +332,7 @@
-+ private int queryVerbosity () {
-+ String defaultVerbStr = Integer.toString(defaultVerbosity);
-+
-+- String verbStr = System.getProperty(pVerbosity);
-++ String verbStr = SecuritySupport.getSystemProperty(pVerbosity);
-+
-+ if (verbStr == null) {
-+ if (resources==null) readProperties();
-+@@ -466,7 +467,7 @@
-+ * @return A semicolon delimited list of catlog file URIs
-+ */
-+ private String queryCatalogFiles () {
-+- String catalogList = System.getProperty(pFiles);
-++ String catalogList = SecuritySupport.getSystemProperty(pFiles);
-+ fromPropertiesFile = false;
-+
-+ if (catalogList == null) {
-+@@ -551,7 +552,7 @@
-+ * defaultPreferSetting.
-+ */
-+ private boolean queryPreferPublic () {
-+- String prefer = System.getProperty(pPrefer);
-++ String prefer = SecuritySupport.getSystemProperty(pPrefer);
-+
-+ if (prefer == null) {
-+ if (resources==null) readProperties();
-+@@ -610,7 +611,7 @@
-+ * defaultUseStaticCatalog.
-+ */
-+ private boolean queryUseStaticCatalog () {
-+- String staticCatalog = System.getProperty(pStatic);
-++ String staticCatalog = SecuritySupport.getSystemProperty(pStatic);
-+
-+ if (staticCatalog == null) {
-+ if (resources==null) readProperties();
-+@@ -741,7 +742,7 @@
-+ * defaultOasisXMLCatalogPI.
-+ */
-+ public boolean queryAllowOasisXMLCatalogPI () {
-+- String allow = System.getProperty(pAllowPI);
-++ String allow = SecuritySupport.getSystemProperty(pAllowPI);
-+
-+ if (allow == null) {
-+ if (resources==null) readProperties();
-+@@ -794,7 +795,7 @@
-+ *
-+ */
-+ public String queryCatalogClassName () {
-+- String className = System.getProperty(pClassname);
-++ String className = SecuritySupport.getSystemProperty(pClassname);
-+
-+ if (className == null) {
-+ if (resources==null) readProperties();
-+--- src/com/sun/org/apache/xml/internal/resolver/Resolver.java 2013-04-16 14:28:09.668155584 +0100
-++++ src/com/sun/org/apache/xml/internal/resolver/Resolver.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -31,6 +31,7 @@
-+ import java.net.URL;
-+ import java.net.URLConnection;
-+ import java.net.MalformedURLException;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import com.sun.org.apache.xml.internal.resolver.readers.SAXCatalogReader;
-+ import com.sun.org.apache.xml.internal.resolver.readers.OASISXMLCatalogReader;
-+ import com.sun.org.apache.xml.internal.resolver.readers.TR9401CatalogReader;
-+@@ -521,7 +522,7 @@
-+ */
-+ private Vector resolveAllLocalSystem(String systemId) {
-+ Vector map = new Vector();
-+- String osname = System.getProperty("os.name");
-++ String osname = SecuritySupport.getSystemProperty("os.name");
-+ boolean windows = (osname.indexOf("Windows") >= 0);
-+ Enumeration en = catalogEntries.elements();
-+ while (en.hasMoreElements()) {
-+@@ -549,7 +550,7 @@
-+ */
-+ private Vector resolveLocalSystemReverse(String systemId) {
-+ Vector map = new Vector();
-+- String osname = System.getProperty("os.name");
-++ String osname = SecuritySupport.getSystemProperty("os.name");
-+ boolean windows = (osname.indexOf("Windows") >= 0);
-+ Enumeration en = catalogEntries.elements();
-+ while (en.hasMoreElements()) {
-+--- src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java 2013-04-16 14:28:09.684155841 +0100
-++++ src/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -21,6 +21,7 @@
-+
-+ package com.sun.org.apache.xml.internal.serialize;
-+
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+
-+ import java.io.OutputStream;
-+ import java.io.Writer;
-+@@ -63,7 +64,7 @@
-+ factory = new SerializerFactoryImpl( Method.TEXT );
-+ registerSerializerFactory( factory );
-+
-+- list = System.getProperty( FactoriesProperty );
-++ list = SecuritySupport.getSystemProperty( FactoriesProperty );
-+ if ( list != null ) {
-+ token = new StringTokenizer( list, " ;,:" );
-+ while ( token.hasMoreTokens() ) {
-+--- src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2013-04-16 14:28:09.684155841 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/Encodings.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -34,6 +34,7 @@
-+ import java.util.Properties;
-+ import java.util.StringTokenizer;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ /**
-+ * Provides information about encodings. Depends on the Java runtime
-+@@ -218,7 +219,7 @@
-+ // Get the default system character encoding. This may be
-+ // incorrect if they passed in a writer, but right now there
-+ // seems to be no way to get the encoding from a writer.
-+- encoding = System.getProperty("file.encoding", "UTF8");
-++ encoding = SecuritySupport.getSystemProperty("file.encoding", "UTF8");
-+
-+ if (null != encoding)
-+ {
-+@@ -312,7 +313,7 @@
-+
-+ try
-+ {
-+- urlString = System.getProperty(ENCODINGS_PROP, "");
-++ urlString = SecuritySupport.getSystemProperty(ENCODINGS_PROP, "");
-+ }
-+ catch (SecurityException e)
-+ {
-+@@ -324,9 +325,7 @@
-+ }
-+
-+ if (is == null) {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+- is = ss.getResourceAsStream(ObjectFactory.findClassLoader(),
-+- ENCODINGS_FILE);
-++ is = SecuritySupport.getResourceAsStream(ENCODINGS_FILE);
-+ }
-+
-+ Properties props = new Properties();
-+--- src/com/sun/org/apache/xml/internal/serializer/ObjectFactory.java 2013-04-16 14:28:09.688155906 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/ObjectFactory.java 1970-01-01 01:00:00.000000000 +0100
-+@@ -1,662 +0,0 @@
-+-/*
-+- * reserved comment block
-+- * DO NOT REMOVE OR ALTER!
-+- */
-+-/*
-+- * Copyright 2001-2004 The Apache Software Foundation.
-+- *
-+- * 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
-+- *
-+- * Unless required by applicable law or agreed to in writing, software
-+- * distributed under the License is distributed on an "AS IS" BASIS,
-+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+- * See the License for the specific language governing permissions and
-+- * limitations under the License.
-+- */
-+-/*
-+- * $Id: ObjectFactory.java,v 1.2.4.1 2005/09/15 08:15:20 suresh_emailid Exp $
-+- */
-+-
-+-package com.sun.org.apache.xml.internal.serializer;
-+-
-+-import java.io.BufferedReader;
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-import java.io.IOException;
-+-import java.io.InputStream;
-+-import java.io.InputStreamReader;
-+-import java.util.Properties;
-+-
-+-/**
-+- * This class is duplicated for each JAXP subpackage so keep it in sync.
-+- * It is package private and therefore is not exposed as part of the JAXP
-+- * API.
-+- * <p>
-+- * This code is designed to implement the JAXP 1.1 spec pluggability
-+- * feature and is designed to run on JDK version 1.1 and
-+- * later, and to compile on JDK 1.2 and onward.
-+- * The code also runs both as part of an unbundled jar file and
-+- * when bundled as part of the JDK.
-+- * <p>
-+- * This class was moved from the <code>javax.xml.parsers.ObjectFactory</code>
-+- * class and modified to be used as a general utility for creating objects
-+- * dynamically.
-+- *
-+- * @xsl.usage internal
-+- */
-+-class ObjectFactory {
-+-
-+- //
-+- // Constants
-+- //
-+-
-+- // name of default properties file to look for in JDK's jre/lib directory
-+- private static final String DEFAULT_PROPERTIES_FILENAME =
-+- "xalan.properties";
-+-
-+- private static final String SERVICES_PATH = "META-INF/services/";
-+-
-+- /** Set to true for debugging */
-+- private static final boolean DEBUG = false;
-+-
-+- /** cache the contents of the xalan.properties file.
-+- * Until an attempt has been made to read this file, this will
-+- * be null; if the file does not exist or we encounter some other error
-+- * during the read, this will be empty.
-+- */
-+- private static Properties fXalanProperties = null;
-+-
-+- /***
-+- * Cache the time stamp of the xalan.properties file so
-+- * that we know if it's been modified and can invalidate
-+- * the cache when necessary.
-+- */
-+- private static long fLastModified = -1;
-+-
-+- //
-+- // Public static methods
-+- //
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return instance of factory, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Object createObject(String factoryId, String fallbackClassName)
-+- throws ConfigurationError {
-+- return createObject(factoryId, null, fallbackClassName);
-+- } // createObject(String,String):Object
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return instance of factory, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Object createObject(String factoryId,
-+- String propertiesFilename,
-+- String fallbackClassName)
-+- throws ConfigurationError
-+- {
-+- Class factoryClass = lookUpFactoryClass(factoryId,
-+- propertiesFilename,
-+- fallbackClassName);
-+-
-+- if (factoryClass == null) {
-+- throw new ConfigurationError(
-+- "Provider for " + factoryId + " cannot be found", null);
-+- }
-+-
-+- try{
-+- Object instance = factoryClass.newInstance();
-+- if (DEBUG) debugPrintln("created new instance of factory " + factoryId);
-+- return instance;
-+- } catch (Exception x) {
-+- throw new ConfigurationError(
-+- "Provider for factory " + factoryId
-+- + " could not be instantiated: " + x, x);
-+- }
-+- } // createObject(String,String,String):Object
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return Class object of factory, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Class lookUpFactoryClass(String factoryId)
-+- throws ConfigurationError
-+- {
-+- return lookUpFactoryClass(factoryId, null, null);
-+- } // lookUpFactoryClass(String):Class
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return Class object that provides factory service, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Class lookUpFactoryClass(String factoryId,
-+- String propertiesFilename,
-+- String fallbackClassName)
-+- throws ConfigurationError
-+- {
-+- String factoryClassName = lookUpFactoryClassName(factoryId,
-+- propertiesFilename,
-+- fallbackClassName);
-+- ClassLoader cl = findClassLoader();
-+-
-+- if (factoryClassName == null) {
-+- factoryClassName = fallbackClassName;
-+- }
-+-
-+- // assert(className != null);
-+- try{
-+- Class providerClass = findProviderClass(factoryClassName,
-+- cl,
-+- true);
-+- if (DEBUG) debugPrintln("created new instance of " + providerClass +
-+- " using ClassLoader: " + cl);
-+- return providerClass;
-+- } catch (ClassNotFoundException x) {
-+- throw new ConfigurationError(
-+- "Provider " + factoryClassName + " not found", x);
-+- } catch (Exception x) {
-+- throw new ConfigurationError(
-+- "Provider "+factoryClassName+" could not be instantiated: "+x,
-+- x);
-+- }
-+- } // lookUpFactoryClass(String,String,String):Class
-+-
-+- /**
-+- * Finds the name of the required implementation class in the specified
-+- * order. The specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return name of class that provides factory service, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static String lookUpFactoryClassName(String factoryId,
-+- String propertiesFilename,
-+- String fallbackClassName)
-+- {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+-
-+- // Use the system property first
-+- try {
-+- String systemProp = ss.getSystemProperty(factoryId);
-+- if (systemProp != null) {
-+- if (DEBUG) debugPrintln("found system property, value=" + systemProp);
-+- return systemProp;
-+- }
-+- } catch (SecurityException se) {
-+- // Ignore and continue w/ next location
-+- }
-+-
-+- // Try to read from propertiesFilename, or
-+- // $java.home/lib/xalan.properties
-+- String factoryClassName = null;
-+- // no properties file name specified; use
-+- // $JAVA_HOME/lib/xalan.properties:
-+- if (propertiesFilename == null) {
-+- File propertiesFile = null;
-+- boolean propertiesFileExists = false;
-+- try {
-+- String javah = ss.getSystemProperty("java.home");
-+- propertiesFilename = javah + File.separator +
-+- "lib" + File.separator + DEFAULT_PROPERTIES_FILENAME;
-+- propertiesFile = new File(propertiesFilename);
-+- propertiesFileExists = ss.getFileExists(propertiesFile);
-+- } catch (SecurityException e) {
-+- // try again...
-+- fLastModified = -1;
-+- fXalanProperties = null;
-+- }
-+-
-+- synchronized (ObjectFactory.class) {
-+- boolean loadProperties = false;
-+- FileInputStream fis = null;
-+- try {
-+- // file existed last time
-+- if(fLastModified >= 0) {
-+- if(propertiesFileExists &&
-+- (fLastModified < (fLastModified = ss.getLastModified(propertiesFile)))) {
-+- loadProperties = true;
-+- } else {
-+- // file has stopped existing...
-+- if(!propertiesFileExists) {
-+- fLastModified = -1;
-+- fXalanProperties = null;
-+- } // else, file wasn't modified!
-+- }
-+- } else {
-+- // file has started to exist:
-+- if(propertiesFileExists) {
-+- loadProperties = true;
-+- fLastModified = ss.getLastModified(propertiesFile);
-+- } // else, nothing's changed
-+- }
-+- if(loadProperties) {
-+- // must never have attempted to read xalan.properties
-+- // before (or it's outdeated)
-+- fXalanProperties = new Properties();
-+- fis = ss.getFileInputStream(propertiesFile);
-+- fXalanProperties.load(fis);
-+- }
-+- } catch (Exception x) {
-+- fXalanProperties = null;
-+- fLastModified = -1;
-+- // assert(x instanceof FileNotFoundException
-+- // || x instanceof SecurityException)
-+- // In both cases, ignore and continue w/ next location
-+- }
-+- finally {
-+- // try to close the input stream if one was opened.
-+- if (fis != null) {
-+- try {
-+- fis.close();
-+- }
-+- // Ignore the exception.
-+- catch (IOException exc) {}
-+- }
-+- }
-+- }
-+- if(fXalanProperties != null) {
-+- factoryClassName = fXalanProperties.getProperty(factoryId);
-+- }
-+- } else {
-+- FileInputStream fis = null;
-+- try {
-+- fis = ss.getFileInputStream(new File(propertiesFilename));
-+- Properties props = new Properties();
-+- props.load(fis);
-+- factoryClassName = props.getProperty(factoryId);
-+- } catch (Exception x) {
-+- // assert(x instanceof FileNotFoundException
-+- // || x instanceof SecurityException)
-+- // In both cases, ignore and continue w/ next location
-+- }
-+- finally {
-+- // try to close the input stream if one was opened.
-+- if (fis != null) {
-+- try {
-+- fis.close();
-+- }
-+- // Ignore the exception.
-+- catch (IOException exc) {}
-+- }
-+- }
-+- }
-+- if (factoryClassName != null) {
-+- if (DEBUG) debugPrintln("found in " + propertiesFilename + ", value="
-+- + factoryClassName);
-+- return factoryClassName;
-+- }
-+-
-+- // Try Jar Service Provider Mechanism
-+- return findJarServiceProviderName(factoryId);
-+- } // lookUpFactoryClass(String,String):String
-+-
-+- //
-+- // Private static methods
-+- //
-+-
-+- /** Prints a message to standard error if debugging is enabled. */
-+- private static void debugPrintln(String msg) {
-+- if (DEBUG) {
-+- System.err.println("JAXP: " + msg);
-+- }
-+- } // debugPrintln(String)
-+-
-+- /**
-+- * Figure out which ClassLoader to use. For JDK 1.2 and later use
-+- * the context ClassLoader.
-+- */
-+- static ClassLoader findClassLoader()
-+- throws ConfigurationError
-+- {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+-
-+- // Figure out which ClassLoader to use for loading the provider
-+- // class. If there is a Context ClassLoader then use it.
-+- ClassLoader context = ss.getContextClassLoader();
-+- ClassLoader system = ss.getSystemClassLoader();
-+-
-+- ClassLoader chain = system;
-+- while (true) {
-+- if (context == chain) {
-+- // Assert: we are on JDK 1.1 or we have no Context ClassLoader
-+- // or any Context ClassLoader in chain of system classloader
-+- // (including extension ClassLoader) so extend to widest
-+- // ClassLoader (always look in system ClassLoader if Xalan
-+- // is in boot/extension/system classpath and in current
-+- // ClassLoader otherwise); normal classloaders delegate
-+- // back to system ClassLoader first so this widening doesn't
-+- // change the fact that context ClassLoader will be consulted
-+- ClassLoader current = ObjectFactory.class.getClassLoader();
-+-
-+- chain = system;
-+- while (true) {
-+- if (current == chain) {
-+- // Assert: Current ClassLoader in chain of
-+- // boot/extension/system ClassLoaders
-+- return system;
-+- }
-+- if (chain == null) {
-+- break;
-+- }
-+- chain = ss.getParentClassLoader(chain);
-+- }
-+-
-+- // Assert: Current ClassLoader not in chain of
-+- // boot/extension/system ClassLoaders
-+- return current;
-+- }
-+-
-+- if (chain == null) {
-+- // boot ClassLoader reached
-+- break;
-+- }
-+-
-+- // Check for any extension ClassLoaders in chain up to
-+- // boot ClassLoader
-+- chain = ss.getParentClassLoader(chain);
-+- };
-+-
-+- // Assert: Context ClassLoader not in chain of
-+- // boot/extension/system ClassLoaders
-+- return context;
-+- } // findClassLoader():ClassLoader
-+-
-+- /**
-+- * Create an instance of a class using the specified ClassLoader
-+- */
-+- static Object newInstance(String className, ClassLoader cl,
-+- boolean doFallback)
-+- throws ConfigurationError
-+- {
-+- // assert(className != null);
-+- try{
-+- Class providerClass = findProviderClass(className, cl, doFallback);
-+- Object instance = providerClass.newInstance();
-+- if (DEBUG) debugPrintln("created new instance of " + providerClass +
-+- " using ClassLoader: " + cl);
-+- return instance;
-+- } catch (ClassNotFoundException x) {
-+- throw new ConfigurationError(
-+- "Provider " + className + " not found", x);
-+- } catch (Exception x) {
-+- throw new ConfigurationError(
-+- "Provider " + className + " could not be instantiated: " + x,
-+- x);
-+- }
-+- }
-+-
-+- /**
-+- * Find a Class using the specified ClassLoader
-+- */
-+- static Class findProviderClass(String className, ClassLoader cl,
-+- boolean doFallback)
-+- throws ClassNotFoundException, ConfigurationError
-+- {
-+- //throw security exception if the calling thread is not allowed to access the
-+- //class. Restrict the access to the package classes as specified in java.security policy.
-+- SecurityManager security = System.getSecurityManager();
-+- try{
-+- if (security != null){
-+- final int lastDot = className.lastIndexOf(".");
-+- String packageName = className;
-+- if (lastDot != -1) packageName = className.substring(0, lastDot);
-+- security.checkPackageAccess(packageName);
-+- }
-+- }catch(SecurityException e){
-+- throw e;
-+- }
-+-
-+- Class providerClass;
-+- if (cl == null) {
-+- // XXX Use the bootstrap ClassLoader. There is no way to
-+- // load a class using the bootstrap ClassLoader that works
-+- // in both JDK 1.1 and Java 2. However, this should still
-+- // work b/c the following should be true:
-+- //
-+- // (cl == null) iff current ClassLoader == null
-+- //
-+- // Thus Class.forName(String) will use the current
-+- // ClassLoader which will be the bootstrap ClassLoader.
-+- providerClass = Class.forName(className);
-+- } else {
-+- try {
-+- providerClass = cl.loadClass(className);
-+- } catch (ClassNotFoundException x) {
-+- if (doFallback) {
-+- // Fall back to current classloader
-+- ClassLoader current = ObjectFactory.class.getClassLoader();
-+- if (current == null) {
-+- providerClass = Class.forName(className);
-+- } else if (cl != current) {
-+- cl = current;
-+- providerClass = cl.loadClass(className);
-+- } else {
-+- throw x;
-+- }
-+- } else {
-+- throw x;
-+- }
-+- }
-+- }
-+-
-+- return providerClass;
-+- }
-+-
-+- /**
-+- * Find the name of service provider using Jar Service Provider Mechanism
-+- *
-+- * @return instance of provider class if found or null
-+- */
-+- private static String findJarServiceProviderName(String factoryId)
-+- {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+- String serviceId = SERVICES_PATH + factoryId;
-+- InputStream is = null;
-+-
-+- // First try the Context ClassLoader
-+- ClassLoader cl = findClassLoader();
-+-
-+- is = ss.getResourceAsStream(cl, serviceId);
-+-
-+- // If no provider found then try the current ClassLoader
-+- if (is == null) {
-+- ClassLoader current = ObjectFactory.class.getClassLoader();
-+- if (cl != current) {
-+- cl = current;
-+- is = ss.getResourceAsStream(cl, serviceId);
-+- }
-+- }
-+-
-+- if (is == null) {
-+- // No provider found
-+- return null;
-+- }
-+-
-+- if (DEBUG) debugPrintln("found jar resource=" + serviceId +
-+- " using ClassLoader: " + cl);
-+-
-+- // Read the service provider name in UTF-8 as specified in
-+- // the jar spec. Unfortunately this fails in Microsoft
-+- // VJ++, which does not implement the UTF-8
-+- // encoding. Theoretically, we should simply let it fail in
-+- // that case, since the JVM is obviously broken if it
-+- // doesn't support such a basic standard. But since there
-+- // are still some users attempting to use VJ++ for
-+- // development, we have dropped in a fallback which makes a
-+- // second attempt using the platform's default encoding. In
-+- // VJ++ this is apparently ASCII, which is a subset of
-+- // UTF-8... and since the strings we'll be reading here are
-+- // also primarily limited to the 7-bit ASCII range (at
-+- // least, in English versions), this should work well
-+- // enough to keep us on the air until we're ready to
-+- // officially decommit from VJ++. [Edited comment from
-+- // jkesselm]
-+- BufferedReader rd;
-+- try {
-+- rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
-+- } catch (java.io.UnsupportedEncodingException e) {
-+- rd = new BufferedReader(new InputStreamReader(is));
-+- }
-+-
-+- String factoryClassName = null;
-+- try {
-+- // XXX Does not handle all possible input as specified by the
-+- // Jar Service Provider specification
-+- factoryClassName = rd.readLine();
-+- } catch (IOException x) {
-+- // No provider found
-+- return null;
-+- }
-+- finally {
-+- try {
-+- // try to close the reader.
-+- rd.close();
-+- }
-+- // Ignore the exception.
-+- catch (IOException exc) {}
-+- }
-+-
-+- if (factoryClassName != null &&
-+- ! "".equals(factoryClassName)) {
-+- if (DEBUG) debugPrintln("found in resource, value="
-+- + factoryClassName);
-+-
-+- // Note: here we do not want to fall back to the current
-+- // ClassLoader because we want to avoid the case where the
-+- // resource file was found using one ClassLoader and the
-+- // provider class was instantiated using a different one.
-+- return factoryClassName;
-+- }
-+-
-+- // No provider found
-+- return null;
-+- }
-+-
-+- //
-+- // Classes
-+- //
-+-
-+- /**
-+- * A configuration error.
-+- */
-+- static class ConfigurationError
-+- extends Error {
-+- static final long serialVersionUID = 8859254254255146542L;
-+- //
-+- // Data
-+- //
-+-
-+- /** Exception. */
-+- private Exception exception;
-+-
-+- //
-+- // Constructors
-+- //
-+-
-+- /**
-+- * Construct a new instance with the specified detail string and
-+- * exception.
-+- */
-+- ConfigurationError(String msg, Exception x) {
-+- super(msg);
-+- this.exception = x;
-+- } // <init>(String,Exception)
-+-
-+- //
-+- // Public methods
-+- //
-+-
-+- /** Returns the exception associated to this error. */
-+- Exception getException() {
-+- return exception;
-+- } // getException():Exception
-+-
-+- } // class ConfigurationError
-+-
-+-} // class ObjectFactory
-+--- src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java 2013-04-16 14:28:09.688155906 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java 2013-04-16 14:29:26.561394576 +0100
-+@@ -22,6 +22,7 @@
-+ */
-+ package com.sun.org.apache.xml.internal.serializer;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.io.BufferedInputStream;
-+ import java.io.IOException;
-+ import java.io.InputStream;
-+@@ -451,7 +452,7 @@
-+ String value = null;
-+ try
-+ {
-+- value = System.getProperty(key);
-++ value = SecuritySupport.getSystemProperty(key);
-+ }
-+ catch (SecurityException se)
-+ {
-+@@ -464,7 +465,7 @@
-+ String newValue = null;
-+ try
-+ {
-+- newValue = System.getProperty(newKey);
-++ newValue = SecuritySupport.getSystemProperty(newKey);
-+ }
-+ catch (SecurityException se)
-+ {
-+--- src/com/sun/org/apache/xml/internal/serializer/SecuritySupport12.java 2013-04-16 14:28:09.688155906 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/SecuritySupport12.java 1970-01-01 01:00:00.000000000 +0100
-+@@ -1,145 +0,0 @@
-+-/*
-+- * reserved comment block
-+- * DO NOT REMOVE OR ALTER!
-+- */
-+-/*
-+- * Copyright 2002-2004 The Apache Software Foundation.
-+- *
-+- * 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
-+- *
-+- * Unless required by applicable law or agreed to in writing, software
-+- * distributed under the License is distributed on an "AS IS" BASIS,
-+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+- * See the License for the specific language governing permissions and
-+- * limitations under the License.
-+- */
-+-/*
-+- * $Id: SecuritySupport12.java,v 1.2.4.1 2005/09/15 08:15:22 suresh_emailid Exp $
-+- */
-+-
-+-package com.sun.org.apache.xml.internal.serializer;
-+-
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-import java.io.FileNotFoundException;
-+-import java.io.InputStream;
-+-import java.security.AccessController;
-+-import java.security.PrivilegedAction;
-+-import java.security.PrivilegedActionException;
-+-import java.security.PrivilegedExceptionAction;
-+-
-+-/**
-+- * This class is duplicated for each Xalan-Java subpackage so keep it in sync.
-+- * It is package private and therefore is not exposed as part of the Xalan-Java
-+- * API.
-+- *
-+- * Security related methods that only work on J2SE 1.2 and newer.
-+- */
-+-class SecuritySupport12 extends SecuritySupport {
-+-
-+- ClassLoader getContextClassLoader() {
-+- return (ClassLoader)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- ClassLoader cl = null;
-+- try {
-+- cl = Thread.currentThread().getContextClassLoader();
-+- } catch (SecurityException ex) { }
-+- return cl;
-+- }
-+- });
-+- }
-+-
-+- ClassLoader getSystemClassLoader() {
-+- return (ClassLoader)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- ClassLoader cl = null;
-+- try {
-+- cl = ClassLoader.getSystemClassLoader();
-+- } catch (SecurityException ex) {}
-+- return cl;
-+- }
-+- });
-+- }
-+-
-+- ClassLoader getParentClassLoader(final ClassLoader cl) {
-+- return (ClassLoader)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- ClassLoader parent = null;
-+- try {
-+- parent = cl.getParent();
-+- } catch (SecurityException ex) {}
-+-
-+- // eliminate loops in case of the boot
-+- // ClassLoader returning itself as a parent
-+- return (parent == cl) ? null : parent;
-+- }
-+- });
-+- }
-+-
-+- String getSystemProperty(final String propName) {
-+- return (String)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- return System.getProperty(propName);
-+- }
-+- });
-+- }
-+-
-+- FileInputStream getFileInputStream(final File file)
-+- throws FileNotFoundException
-+- {
-+- try {
-+- return (FileInputStream)
-+- AccessController.doPrivileged(new PrivilegedExceptionAction() {
-+- public Object run() throws FileNotFoundException {
-+- return new FileInputStream(file);
-+- }
-+- });
-+- } catch (PrivilegedActionException e) {
-+- throw (FileNotFoundException)e.getException();
-+- }
-+- }
-+-
-+- InputStream getResourceAsStream(final ClassLoader cl,
-+- final String name)
-+- {
-+- return (InputStream)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- InputStream ris;
-+- if (cl == null) {
-+- ris = ClassLoader.getSystemResourceAsStream(name);
-+- } else {
-+- ris = cl.getResourceAsStream(name);
-+- }
-+- return ris;
-+- }
-+- });
-+- }
-+-
-+- boolean getFileExists(final File f) {
-+- return ((Boolean)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- return new Boolean(f.exists());
-+- }
-+- })).booleanValue();
-+- }
-+-
-+- long getLastModified(final File f) {
-+- return ((Long)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- return new Long(f.lastModified());
-+- }
-+- })).longValue();
-+- }
-+-
-+-}
-+--- src/com/sun/org/apache/xml/internal/serializer/SecuritySupport.java 2013-04-16 14:28:09.688155906 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/SecuritySupport.java 1970-01-01 01:00:00.000000000 +0100
-+@@ -1,125 +0,0 @@
-+-/*
-+- * reserved comment block
-+- * DO NOT REMOVE OR ALTER!
-+- */
-+-/*
-+- * Copyright 2002-2004 The Apache Software Foundation.
-+- *
-+- * 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
-+- *
-+- * Unless required by applicable law or agreed to in writing, software
-+- * distributed under the License is distributed on an "AS IS" BASIS,
-+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+- * See the License for the specific language governing permissions and
-+- * limitations under the License.
-+- */
-+-/*
-+- * $Id: SecuritySupport.java,v 1.2.4.1 2005/09/15 08:15:21 suresh_emailid Exp $
-+- */
-+-
-+-package com.sun.org.apache.xml.internal.serializer;
-+-
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-import java.io.FileNotFoundException;
-+-import java.io.InputStream;
-+-
-+-/**
-+- * This class is duplicated for each Xalan-Java subpackage so keep it in sync.
-+- * It is package private and therefore is not exposed as part of the Xalan-Java
-+- * API.
-+- *
-+- * Base class with security related methods that work on JDK 1.1.
-+- */
-+-class SecuritySupport {
-+-
-+- /*
-+- * Make this of type Object so that the verifier won't try to
-+- * prove its type, thus possibly trying to load the SecuritySupport12
-+- * class.
-+- */
-+- private static final Object securitySupport;
-+-
-+- static {
-+- SecuritySupport ss = null;
-+- try {
-+- Class c = Class.forName("java.security.AccessController");
-+- // if that worked, we're on 1.2.
-+- /*
-+- // don't reference the class explicitly so it doesn't
-+- // get dragged in accidentally.
-+- c = Class.forName("javax.mail.SecuritySupport12");
-+- Constructor cons = c.getConstructor(new Class[] { });
-+- ss = (SecuritySupport)cons.newInstance(new Object[] { });
-+- */
-+- /*
-+- * Unfortunately, we can't load the class using reflection
-+- * because the class is package private. And the class has
-+- * to be package private so the APIs aren't exposed to other
-+- * code that could use them to circumvent security. Thus,
-+- * we accept the risk that the direct reference might fail
-+- * on some JDK 1.1 JVMs, even though we would never execute
-+- * this code in such a case. Sigh...
-+- */
-+- ss = new SecuritySupport12();
-+- } catch (Exception ex) {
-+- // ignore it
-+- } finally {
-+- if (ss == null)
-+- ss = new SecuritySupport();
-+- securitySupport = ss;
-+- }
-+- }
-+-
-+- /**
-+- * Return an appropriate instance of this class, depending on whether
-+- * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
-+- */
-+- static SecuritySupport getInstance() {
-+- return (SecuritySupport)securitySupport;
-+- }
-+-
-+- ClassLoader getContextClassLoader() {
-+- return null;
-+- }
-+-
-+- ClassLoader getSystemClassLoader() {
-+- return null;
-+- }
-+-
-+- ClassLoader getParentClassLoader(ClassLoader cl) {
-+- return null;
-+- }
-+-
-+- String getSystemProperty(String propName) {
-+- return System.getProperty(propName);
-+- }
-+-
-+- FileInputStream getFileInputStream(File file)
-+- throws FileNotFoundException
-+- {
-+- return new FileInputStream(file);
-+- }
-+-
-+- InputStream getResourceAsStream(ClassLoader cl, String name) {
-+- InputStream ris;
-+- if (cl == null) {
-+- ris = ClassLoader.getSystemResourceAsStream(name);
-+- } else {
-+- ris = cl.getResourceAsStream(name);
-+- }
-+- return ris;
-+- }
-+-
-+- boolean getFileExists(File f) {
-+- return f.exists();
-+- }
-+-
-+- long getLastModified(File f) {
-+- return f.lastModified();
-+- }
-+-}
-+--- src/com/sun/org/apache/xml/internal/serializer/ToStream.java 2013-04-16 14:28:09.700156100 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/ToStream.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -22,6 +22,7 @@
-+ */
-+ package com.sun.org.apache.xml.internal.serializer;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.io.IOException;
-+ import java.io.OutputStream;
-+ import java.io.UnsupportedEncodingException;
-+@@ -140,7 +141,7 @@
-+ * extension attribute xalan:line-separator.
-+ */
-+ protected char[] m_lineSep =
-+- System.getProperty("line.separator").toCharArray();
-++ SecuritySupport.getSystemProperty("line.separator").toCharArray();
-+
-+ /**
-+ * True if the the system line separator is to be used.
-+--- src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java 2013-04-16 14:28:09.704156164 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/TreeWalker.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -22,6 +22,7 @@
-+ */
-+ package com.sun.org.apache.xml.internal.serializer;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.io.File;
-+
-+ import com.sun.org.apache.xml.internal.serializer.utils.AttList;
-+@@ -104,7 +105,7 @@
-+ else {
-+ try {
-+ // Bug see Bugzilla 26741
-+- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
-++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
-+ }
-+ catch (SecurityException se) {// user.dir not accessible from applet
-+ }
-+@@ -115,7 +116,7 @@
-+ m_contentHandler.setDocumentLocator(m_locator);
-+ try {
-+ // Bug see Bugzilla 26741
-+- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
-++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
-+ }
-+ catch (SecurityException se){// user.dir not accessible from applet
-+
-+--- src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java 2013-04-16 14:28:09.708156229 +0100
-++++ src/com/sun/org/apache/xml/internal/serializer/utils/Messages.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -22,6 +22,7 @@
-+ */
-+ package com.sun.org.apache.xml.internal.serializer.utils;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.util.ListResourceBundle;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+@@ -87,9 +88,6 @@
-+ * can have the Message strings translated in an alternate language
-+ * in a errorResourceClass with a language suffix.
-+ *
-+- * More sophisticated use of this class would be to pass null
-+- * when contructing it, but then call loadResourceBundle()
-+- * before creating any messages.
-+ *
-+ * This class is not a public API, it is only public because it is
-+ * used in com.sun.org.apache.xml.internal.serializer.
-+@@ -126,18 +124,6 @@
-+ m_resourceBundleName = resourceBundle;
-+ }
-+
-+- /*
-+- * Set the Locale object to use. If this method is not called the
-+- * default locale is used. This method needs to be called before
-+- * loadResourceBundle().
-+- *
-+- * @param locale non-null reference to Locale object.
-+- * @xsl.usage internal
-+- */
-+-// public void setLocale(Locale locale)
-+-// {
-+-// m_locale = locale;
-+-// }
-+
-+ /**
-+ * Get the Locale object that is being used.
-+@@ -151,16 +137,6 @@
-+ }
-+
-+ /**
-+- * Get the ListResourceBundle being used by this Messages instance which was
-+- * previously set by a call to loadResourceBundle(className)
-+- * @xsl.usage internal
-+- */
-+- private ListResourceBundle getResourceBundle()
-+- {
-+- return m_resourceBundle;
-+- }
-+-
-+- /**
-+ * Creates a message from the specified key and replacement
-+ * arguments, localized to the given locale.
-+ *
-+@@ -174,7 +150,7 @@
-+ public final String createMessage(String msgKey, Object args[])
-+ {
-+ if (m_resourceBundle == null)
-+- m_resourceBundle = loadResourceBundle(m_resourceBundleName);
-++ m_resourceBundle = SecuritySupport.getResourceBundle(m_resourceBundleName);
-+
-+ if (m_resourceBundle != null)
-+ {
-+@@ -293,76 +269,4 @@
-+ return fmsg;
-+ }
-+
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className the name of the class that implements ListResourceBundle,
-+- * without language suffix.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- * @xsl.usage internal
-+- */
-+- private ListResourceBundle loadResourceBundle(String resourceBundle)
-+- throws MissingResourceException
-+- {
-+- m_resourceBundleName = resourceBundle;
-+- Locale locale = getLocale();
-+-
-+- ListResourceBundle lrb;
-+-
-+- try
-+- {
-+-
-+- ResourceBundle rb =
-+- ResourceBundle.getBundle(m_resourceBundleName, locale);
-+- lrb = (ListResourceBundle) rb;
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- lrb =
-+- (ListResourceBundle) ResourceBundle.getBundle(
-+- m_resourceBundleName,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles." + m_resourceBundleName,
-+- m_resourceBundleName,
-+- "");
-+- }
-+- }
-+- m_resourceBundle = lrb;
-+- return lrb;
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which can be appended to a resource name
-+- * @xsl.usage internal
-+- */
-+- private static String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+ }
-+--- src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java 2013-04-16 14:28:09.728156552 +0100
-++++ src/com/sun/org/apache/xml/internal/utils/res/XResourceBundle.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -22,6 +22,8 @@
-+ */
-+ package com.sun.org.apache.xml.internal.utils.res;
-+
-++import java.security.AccessController;
-++import java.security.PrivilegedAction;
-+ import java.util.ListResourceBundle;
-+ import java.util.Locale;
-+ import java.util.MissingResourceException;
-+@@ -29,114 +31,45 @@
-+
-+ /**
-+ * The default (english) resource bundle.
-++ *
-+ * @xsl.usage internal
-+ */
-+-public class XResourceBundle extends ListResourceBundle
-+-{
-++public class XResourceBundle extends ListResourceBundle {
-+
-+- /** Error resource constants */
-+- public static final String ERROR_RESOURCES =
-+- "com.sun.org.apache.xalan.internal.res.XSLTErrorResources", XSLT_RESOURCE =
-+- "com.sun.org.apache.xml.internal.utils.res.XResourceBundle", LANG_BUNDLE_NAME =
-+- "com.sun.org.apache.xml.internal.utils.res.XResources", MULT_ORDER =
-+- "multiplierOrder", MULT_PRECEDES = "precedes", MULT_FOLLOWS =
-+- "follows", LANG_ORIENTATION = "orientation", LANG_RIGHTTOLEFT =
-+- "rightToLeft", LANG_LEFTTORIGHT = "leftToRight", LANG_NUMBERING =
-+- "numbering", LANG_ADDITIVE = "additive", LANG_MULT_ADD =
-+- "multiplicative-additive", LANG_MULTIPLIER =
-+- "multiplier", LANG_MULTIPLIER_CHAR =
-+- "multiplierChar", LANG_NUMBERGROUPS = "numberGroups", LANG_NUM_TABLES =
-+- "tables", LANG_ALPHABET = "alphabet", LANG_TRAD_ALPHABET = "tradAlphabet";
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @param locale the locale to prefer when searching for the bundle
-+- */
-+- public static final XResourceBundle loadResourceBundle(
-+- String className, Locale locale) throws MissingResourceException
-+- {
-+-
-+- String suffix = getResourceSuffix(locale);
-+-
-+- //System.out.println("resource " + className + suffix);
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- String resourceName = className + suffix;
-+- return (XResourceBundle) ResourceBundle.getBundle(resourceName, locale);
-++ /**
-++ * Error resource constants
-++ */
-++ public static final String ERROR_RESOURCES =
-++ "com.sun.org.apache.xalan.internal.res.XSLTErrorResources", XSLT_RESOURCE =
-++ "com.sun.org.apache.xml.internal.utils.res.XResourceBundle", LANG_BUNDLE_NAME =
-++ "com.sun.org.apache.xml.internal.utils.res.XResources", MULT_ORDER =
-++ "multiplierOrder", MULT_PRECEDES = "precedes", MULT_FOLLOWS =
-++ "follows", LANG_ORIENTATION = "orientation", LANG_RIGHTTOLEFT =
-++ "rightToLeft", LANG_LEFTTORIGHT = "leftToRight", LANG_NUMBERING =
-++ "numbering", LANG_ADDITIVE = "additive", LANG_MULT_ADD =
-++ "multiplicative-additive", LANG_MULTIPLIER =
-++ "multiplier", LANG_MULTIPLIER_CHAR =
-++ "multiplierChar", LANG_NUMBERGROUPS = "numberGroups", LANG_NUM_TABLES =
-++ "tables", LANG_ALPHABET = "alphabet", LANG_TRAD_ALPHABET = "tradAlphabet";
-++
-++
-++ /**
-++ * Get the association list.
-++ *
-++ * @return The association list.
-++ */
-++ public Object[][] getContents() {
-++ return new Object[][]{
-++ {"ui_language", "en"}, {"help_language", "en"}, {"language", "en"},
-++ {"alphabet", new CharArrayWrapper(new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G',
-++ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
-++ 'V', 'W', 'X', 'Y', 'Z'})},
-++ {"tradAlphabet", new CharArrayWrapper(new char[]{'A', 'B', 'C', 'D', 'E', 'F',
-++ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
-++ 'U', 'V', 'W', 'X', 'Y', 'Z'})},
-++ //language orientation
-++ {"orientation", "LeftToRight"},
-++ //language numbering
-++ {"numbering", "additive"},};
-+ }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XResourceBundle) ResourceBundle.getBundle(
-+- XSLT_RESOURCE, new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String lang = locale.getLanguage();
-+- String country = locale.getCountry();
-+- String variant = locale.getVariant();
-+- String suffix = "_" + locale.getLanguage();
-+-
-+- if (lang.equals("zh"))
-+- suffix += "_" + country;
-+-
-+- if (country.equals("JP"))
-+- suffix += "_" + country + "_" + variant;
-+-
-+- return suffix;
-+- }
-+-
-+- /**
-+- * Get the association list.
-+- *
-+- * @return The association list.
-+- */
-+- public Object[][] getContents()
-+- {
-+- return new Object[][]
-+- {
-+- { "ui_language", "en" }, { "help_language", "en" }, { "language", "en" },
-+- { "alphabet", new CharArrayWrapper(new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G',
-+- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
-+- 'V', 'W', 'X', 'Y', 'Z' })},
-+- { "tradAlphabet", new CharArrayWrapper(new char[]{ 'A', 'B', 'C', 'D', 'E', 'F',
-+- 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
-+- 'U', 'V', 'W', 'X', 'Y', 'Z' }) },
-+-
-+- //language orientation
-+- { "orientation", "LeftToRight" },
-+-
-+- //language numbering
-+- { "numbering", "additive" },
-+- };
-+- }
-+ }
-+--- src/com/sun/org/apache/xml/internal/utils/TreeWalker.java 2013-04-16 14:28:09.720156422 +0100
-++++ src/com/sun/org/apache/xml/internal/utils/TreeWalker.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -22,6 +22,7 @@
-+ */
-+ package com.sun.org.apache.xml.internal.utils;
-+
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+ import java.io.File;
-+
-+ import org.w3c.dom.Comment;
-+@@ -93,7 +94,7 @@
-+ else {
-+ try {
-+ // Bug see Bugzilla 26741
-+- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
-++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
-+ }
-+ catch (SecurityException se) {// user.dir not accessible from applet
-+ }
-+@@ -112,7 +113,7 @@
-+ m_contentHandler.setDocumentLocator(m_locator);
-+ try {
-+ // Bug see Bugzilla 26741
-+- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
-++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
-+ }
-+ catch (SecurityException se){// user.dir not accessible from applet
-+ }
-+@@ -131,7 +132,7 @@
-+ m_contentHandler.setDocumentLocator(m_locator);
-+ try {
-+ // Bug see Bugzilla 26741
-+- m_locator.setSystemId(System.getProperty("user.dir") + File.separator + "dummy.xsl");
-++ m_locator.setSystemId(SecuritySupport.getSystemProperty("user.dir") + File.separator + "dummy.xsl");
-+ }
-+ catch (SecurityException se){// user.dir not accessible from applet
-+
-+--- src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2013-04-16 14:28:09.752156937 +0100
-++++ src/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -31,6 +31,8 @@
-+ import com.sun.org.apache.xpath.internal.objects.XObject;
-+ import com.sun.org.apache.xpath.internal.objects.XString;
-+ import com.sun.org.apache.xpath.internal.res.XPATHErrorResources;
-++import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
-++import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
-+
-+ /**
-+ * Execute the SystemProperty() function.
-+@@ -100,7 +102,7 @@
-+
-+ try
-+ {
-+- result = System.getProperty(propName);
-++ result = SecuritySupport.getSystemProperty(propName);
-+
-+ if (null == result)
-+ {
-+@@ -122,7 +124,7 @@
-+ {
-+ try
-+ {
-+- result = System.getProperty(fullName);
-++ result = SecuritySupport.getSystemProperty(fullName);
-+
-+ if (null == result)
-+ {
-+@@ -163,14 +165,12 @@
-+ * should already be fully qualified as path/filename
-+ * @param target The target property bag the file will be placed into.
-+ */
-+- private void loadPropertyFile(String file, Properties target)
-++ public void loadPropertyFile(String file, Properties target)
-+ {
-+ try
-+ {
-+ // Use SecuritySupport class to provide priveleged access to property file
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+-
-+- InputStream is = ss.getResourceAsStream(ObjectFactory.findClassLoader(),
-++ InputStream is = SecuritySupport.getResourceAsStream(ObjectFactory.findClassLoader(),
-+ file);
-+
-+ // get a buffered version
-+--- src/com/sun/org/apache/xpath/internal/functions/ObjectFactory.java 2013-04-16 14:28:09.752156937 +0100
-++++ src/com/sun/org/apache/xpath/internal/functions/ObjectFactory.java 1970-01-01 01:00:00.000000000 +0100
-+@@ -1,663 +0,0 @@
-+-/*
-+- * reserved comment block
-+- * DO NOT REMOVE OR ALTER!
-+- */
-+-/*
-+- * Copyright 2001-2004 The Apache Software Foundation.
-+- *
-+- * 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
-+- *
-+- * Unless required by applicable law or agreed to in writing, software
-+- * distributed under the License is distributed on an "AS IS" BASIS,
-+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+- * See the License for the specific language governing permissions and
-+- * limitations under the License.
-+- */
-+-/*
-+- * $Id: ObjectFactory.java,v 1.2.4.1 2005/09/14 20:25:54 jeffsuttor Exp $
-+- */
-+-
-+-package com.sun.org.apache.xpath.internal.functions;
-+-
-+-import java.io.InputStream;
-+-import java.io.IOException;
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-
-+-import java.util.Properties;
-+-import java.io.BufferedReader;
-+-import java.io.InputStreamReader;
-+-
-+-/**
-+- * This class is duplicated for each JAXP subpackage so keep it in sync.
-+- * It is package private and therefore is not exposed as part of the JAXP
-+- * API.
-+- * <p>
-+- * This code is designed to implement the JAXP 1.1 spec pluggability
-+- * feature and is designed to run on JDK version 1.1 and
-+- * later, and to compile on JDK 1.2 and onward.
-+- * The code also runs both as part of an unbundled jar file and
-+- * when bundled as part of the JDK.
-+- * <p>
-+- * This class was moved from the <code>javax.xml.parsers.ObjectFactory</code>
-+- * class and modified to be used as a general utility for creating objects
-+- * dynamically.
-+- *
-+- * @version $Id: ObjectFactory.java,v 1.7 2008/04/02 00:40:59 joehw Exp $
-+- */
-+-class ObjectFactory {
-+-
-+- //
-+- // Constants
-+- //
-+-
-+- // name of default properties file to look for in JDK's jre/lib directory
-+- private static final String DEFAULT_PROPERTIES_FILENAME =
-+- "xalan.properties";
-+-
-+- private static final String SERVICES_PATH = "META-INF/services/";
-+-
-+- /** Set to true for debugging */
-+- private static final boolean DEBUG = false;
-+-
-+- /** cache the contents of the xalan.properties file.
-+- * Until an attempt has been made to read this file, this will
-+- * be null; if the file does not exist or we encounter some other error
-+- * during the read, this will be empty.
-+- */
-+- private static Properties fXalanProperties = null;
-+-
-+- /***
-+- * Cache the time stamp of the xalan.properties file so
-+- * that we know if it's been modified and can invalidate
-+- * the cache when necessary.
-+- */
-+- private static long fLastModified = -1;
-+-
-+- //
-+- // Public static methods
-+- //
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return instance of factory, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Object createObject(String factoryId, String fallbackClassName)
-+- throws ConfigurationError {
-+- return createObject(factoryId, null, fallbackClassName);
-+- } // createObject(String,String):Object
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return instance of factory, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Object createObject(String factoryId,
-+- String propertiesFilename,
-+- String fallbackClassName)
-+- throws ConfigurationError
-+- {
-+- Class factoryClass = lookUpFactoryClass(factoryId,
-+- propertiesFilename,
-+- fallbackClassName);
-+-
-+- if (factoryClass == null) {
-+- throw new ConfigurationError(
-+- "Provider for " + factoryId + " cannot be found", null);
-+- }
-+-
-+- try{
-+- Object instance = factoryClass.newInstance();
-+- if (DEBUG) debugPrintln("created new instance of factory " + factoryId);
-+- return instance;
-+- } catch (Exception x) {
-+- throw new ConfigurationError(
-+- "Provider for factory " + factoryId
-+- + " could not be instantiated: " + x, x);
-+- }
-+- } // createObject(String,String,String):Object
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return Class object of factory, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Class lookUpFactoryClass(String factoryId)
-+- throws ConfigurationError
-+- {
-+- return lookUpFactoryClass(factoryId, null, null);
-+- } // lookUpFactoryClass(String):Class
-+-
-+- /**
-+- * Finds the implementation Class object in the specified order. The
-+- * specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return Class object that provides factory service, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static Class lookUpFactoryClass(String factoryId,
-+- String propertiesFilename,
-+- String fallbackClassName)
-+- throws ConfigurationError
-+- {
-+- String factoryClassName = lookUpFactoryClassName(factoryId,
-+- propertiesFilename,
-+- fallbackClassName);
-+- ClassLoader cl = findClassLoader();
-+-
-+- if (factoryClassName == null) {
-+- factoryClassName = fallbackClassName;
-+- }
-+-
-+- // assert(className != null);
-+- try{
-+- Class providerClass = findProviderClass(factoryClassName,
-+- cl,
-+- true);
-+- if (DEBUG) debugPrintln("created new instance of " + providerClass +
-+- " using ClassLoader: " + cl);
-+- return providerClass;
-+- } catch (ClassNotFoundException x) {
-+- throw new ConfigurationError(
-+- "Provider " + factoryClassName + " not found", x);
-+- } catch (Exception x) {
-+- throw new ConfigurationError(
-+- "Provider "+factoryClassName+" could not be instantiated: "+x,
-+- x);
-+- }
-+- } // lookUpFactoryClass(String,String,String):Class
-+-
-+- /**
-+- * Finds the name of the required implementation class in the specified
-+- * order. The specified order is the following:
-+- * <ol>
-+- * <li>query the system property using <code>System.getProperty</code>
-+- * <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-+- * <li>read <code>META-INF/services/<i>factoryId</i></code> file
-+- * <li>use fallback classname
-+- * </ol>
-+- *
-+- * @return name of class that provides factory service, never null
-+- *
-+- * @param factoryId Name of the factory to find, same as
-+- * a property name
-+- * @param propertiesFilename The filename in the $java.home/lib directory
-+- * of the properties file. If none specified,
-+- * ${java.home}/lib/xalan.properties will be used.
-+- * @param fallbackClassName Implementation class name, if nothing else
-+- * is found. Use null to mean no fallback.
-+- *
-+- * @exception ObjectFactory.ConfigurationError
-+- */
-+- static String lookUpFactoryClassName(String factoryId,
-+- String propertiesFilename,
-+- String fallbackClassName)
-+- {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+-
-+- // Use the system property first
-+- try {
-+- String systemProp = ss.getSystemProperty(factoryId);
-+- if (systemProp != null) {
-+- if (DEBUG) debugPrintln("found system property, value=" + systemProp);
-+- return systemProp;
-+- }
-+- } catch (SecurityException se) {
-+- // Ignore and continue w/ next location
-+- }
-+-
-+- // Try to read from propertiesFilename, or
-+- // $java.home/lib/xalan.properties
-+- String factoryClassName = null;
-+- // no properties file name specified; use
-+- // $JAVA_HOME/lib/xalan.properties:
-+- if (propertiesFilename == null) {
-+- File propertiesFile = null;
-+- boolean propertiesFileExists = false;
-+- try {
-+- String javah = ss.getSystemProperty("java.home");
-+- propertiesFilename = javah + File.separator +
-+- "lib" + File.separator + DEFAULT_PROPERTIES_FILENAME;
-+- propertiesFile = new File(propertiesFilename);
-+- propertiesFileExists = ss.getFileExists(propertiesFile);
-+- } catch (SecurityException e) {
-+- // try again...
-+- fLastModified = -1;
-+- fXalanProperties = null;
-+- }
-+-
-+- synchronized (ObjectFactory.class) {
-+- boolean loadProperties = false;
-+- FileInputStream fis = null;
-+- try {
-+- // file existed last time
-+- if(fLastModified >= 0) {
-+- if(propertiesFileExists &&
-+- (fLastModified < (fLastModified = ss.getLastModified(propertiesFile)))) {
-+- loadProperties = true;
-+- } else {
-+- // file has stopped existing...
-+- if(!propertiesFileExists) {
-+- fLastModified = -1;
-+- fXalanProperties = null;
-+- } // else, file wasn't modified!
-+- }
-+- } else {
-+- // file has started to exist:
-+- if(propertiesFileExists) {
-+- loadProperties = true;
-+- fLastModified = ss.getLastModified(propertiesFile);
-+- } // else, nothing's changed
-+- }
-+- if(loadProperties) {
-+- // must never have attempted to read xalan.properties
-+- // before (or it's outdeated)
-+- fXalanProperties = new Properties();
-+- fis = ss.getFileInputStream(propertiesFile);
-+- fXalanProperties.load(fis);
-+- }
-+- } catch (Exception x) {
-+- fXalanProperties = null;
-+- fLastModified = -1;
-+- // assert(x instanceof FileNotFoundException
-+- // || x instanceof SecurityException)
-+- // In both cases, ignore and continue w/ next location
-+- }
-+- finally {
-+- // try to close the input stream if one was opened.
-+- if (fis != null) {
-+- try {
-+- fis.close();
-+- }
-+- // Ignore the exception.
-+- catch (IOException exc) {}
-+- }
-+- }
-+- }
-+- if(fXalanProperties != null) {
-+- factoryClassName = fXalanProperties.getProperty(factoryId);
-+- }
-+- } else {
-+- FileInputStream fis = null;
-+- try {
-+- fis = ss.getFileInputStream(new File(propertiesFilename));
-+- Properties props = new Properties();
-+- props.load(fis);
-+- factoryClassName = props.getProperty(factoryId);
-+- } catch (Exception x) {
-+- // assert(x instanceof FileNotFoundException
-+- // || x instanceof SecurityException)
-+- // In both cases, ignore and continue w/ next location
-+- }
-+- finally {
-+- // try to close the input stream if one was opened.
-+- if (fis != null) {
-+- try {
-+- fis.close();
-+- }
-+- // Ignore the exception.
-+- catch (IOException exc) {}
-+- }
-+- }
-+- }
-+- if (factoryClassName != null) {
-+- if (DEBUG) debugPrintln("found in " + propertiesFilename + ", value="
-+- + factoryClassName);
-+- return factoryClassName;
-+- }
-+-
-+- // Try Jar Service Provider Mechanism
-+- return findJarServiceProviderName(factoryId);
-+- } // lookUpFactoryClass(String,String):String
-+-
-+- //
-+- // Private static methods
-+- //
-+-
-+- /** Prints a message to standard error if debugging is enabled. */
-+- private static void debugPrintln(String msg) {
-+- if (DEBUG) {
-+- System.err.println("JAXP: " + msg);
-+- }
-+- } // debugPrintln(String)
-+-
-+- /**
-+- * Figure out which ClassLoader to use. For JDK 1.2 and later use
-+- * the context ClassLoader.
-+- */
-+- static ClassLoader findClassLoader()
-+- throws ConfigurationError
-+- {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+-
-+- // Figure out which ClassLoader to use for loading the provider
-+- // class. If there is a Context ClassLoader then use it.
-+- ClassLoader context = ss.getContextClassLoader();
-+- ClassLoader system = ss.getSystemClassLoader();
-+-
-+- ClassLoader chain = system;
-+- while (true) {
-+- if (context == chain) {
-+- // Assert: we are on JDK 1.1 or we have no Context ClassLoader
-+- // or any Context ClassLoader in chain of system classloader
-+- // (including extension ClassLoader) so extend to widest
-+- // ClassLoader (always look in system ClassLoader if Xalan
-+- // is in boot/extension/system classpath and in current
-+- // ClassLoader otherwise); normal classloaders delegate
-+- // back to system ClassLoader first so this widening doesn't
-+- // change the fact that context ClassLoader will be consulted
-+- ClassLoader current = ObjectFactory.class.getClassLoader();
-+-
-+- chain = system;
-+- while (true) {
-+- if (current == chain) {
-+- // Assert: Current ClassLoader in chain of
-+- // boot/extension/system ClassLoaders
-+- return system;
-+- }
-+- if (chain == null) {
-+- break;
-+- }
-+- chain = ss.getParentClassLoader(chain);
-+- }
-+-
-+- // Assert: Current ClassLoader not in chain of
-+- // boot/extension/system ClassLoaders
-+- return current;
-+- }
-+-
-+- if (chain == null) {
-+- // boot ClassLoader reached
-+- break;
-+- }
-+-
-+- // Check for any extension ClassLoaders in chain up to
-+- // boot ClassLoader
-+- chain = ss.getParentClassLoader(chain);
-+- };
-+-
-+- // Assert: Context ClassLoader not in chain of
-+- // boot/extension/system ClassLoaders
-+- return context;
-+- } // findClassLoader():ClassLoader
-+-
-+- /**
-+- * Create an instance of a class using the specified ClassLoader
-+- */
-+- static Object newInstance(String className, ClassLoader cl,
-+- boolean doFallback)
-+- throws ConfigurationError
-+- {
-+- // assert(className != null);
-+- try{
-+- Class providerClass = findProviderClass(className, cl, doFallback);
-+- Object instance = providerClass.newInstance();
-+- if (DEBUG) debugPrintln("created new instance of " + providerClass +
-+- " using ClassLoader: " + cl);
-+- return instance;
-+- } catch (ClassNotFoundException x) {
-+- throw new ConfigurationError(
-+- "Provider " + className + " not found", x);
-+- } catch (Exception x) {
-+- throw new ConfigurationError(
-+- "Provider " + className + " could not be instantiated: " + x,
-+- x);
-+- }
-+- }
-+-
-+- /**
-+- * Find a Class using the specified ClassLoader
-+- */
-+- static Class findProviderClass(String className, ClassLoader cl,
-+- boolean doFallback)
-+- throws ClassNotFoundException, ConfigurationError
-+- {
-+- //throw security exception if the calling thread is not allowed to access the
-+- //class. Restrict the access to the package classes as specified in java.security policy.
-+- SecurityManager security = System.getSecurityManager();
-+- try{
-+- if (security != null){
-+- final int lastDot = className.lastIndexOf(".");
-+- String packageName = className;
-+- if (lastDot != -1) packageName = className.substring(0, lastDot);
-+- security.checkPackageAccess(packageName);
-+- }
-+- }catch(SecurityException e){
-+- throw e;
-+- }
-+-
-+- Class providerClass;
-+- if (cl == null) {
-+- // XXX Use the bootstrap ClassLoader. There is no way to
-+- // load a class using the bootstrap ClassLoader that works
-+- // in both JDK 1.1 and Java 2. However, this should still
-+- // work b/c the following should be true:
-+- //
-+- // (cl == null) iff current ClassLoader == null
-+- //
-+- // Thus Class.forName(String) will use the current
-+- // ClassLoader which will be the bootstrap ClassLoader.
-+- providerClass = Class.forName(className);
-+- } else {
-+- try {
-+- providerClass = cl.loadClass(className);
-+- } catch (ClassNotFoundException x) {
-+- if (doFallback) {
-+- // Fall back to current classloader
-+- ClassLoader current = ObjectFactory.class.getClassLoader();
-+- if (current == null) {
-+- providerClass = Class.forName(className);
-+- } else if (cl != current) {
-+- cl = current;
-+- providerClass = cl.loadClass(className);
-+- } else {
-+- throw x;
-+- }
-+- } else {
-+- throw x;
-+- }
-+- }
-+- }
-+-
-+- return providerClass;
-+- }
-+-
-+- /**
-+- * Find the name of service provider using Jar Service Provider Mechanism
-+- *
-+- * @return instance of provider class if found or null
-+- */
-+- private static String findJarServiceProviderName(String factoryId)
-+- {
-+- SecuritySupport ss = SecuritySupport.getInstance();
-+- String serviceId = SERVICES_PATH + factoryId;
-+- InputStream is = null;
-+-
-+- // First try the Context ClassLoader
-+- ClassLoader cl = findClassLoader();
-+-
-+- is = ss.getResourceAsStream(cl, serviceId);
-+-
-+- // If no provider found then try the current ClassLoader
-+- if (is == null) {
-+- ClassLoader current = ObjectFactory.class.getClassLoader();
-+- if (cl != current) {
-+- cl = current;
-+- is = ss.getResourceAsStream(cl, serviceId);
-+- }
-+- }
-+-
-+- if (is == null) {
-+- // No provider found
-+- return null;
-+- }
-+-
-+- if (DEBUG) debugPrintln("found jar resource=" + serviceId +
-+- " using ClassLoader: " + cl);
-+-
-+- // Read the service provider name in UTF-8 as specified in
-+- // the jar spec. Unfortunately this fails in Microsoft
-+- // VJ++, which does not implement the UTF-8
-+- // encoding. Theoretically, we should simply let it fail in
-+- // that case, since the JVM is obviously broken if it
-+- // doesn't support such a basic standard. But since there
-+- // are still some users attempting to use VJ++ for
-+- // development, we have dropped in a fallback which makes a
-+- // second attempt using the platform's default encoding. In
-+- // VJ++ this is apparently ASCII, which is a subset of
-+- // UTF-8... and since the strings we'll be reading here are
-+- // also primarily limited to the 7-bit ASCII range (at
-+- // least, in English versions), this should work well
-+- // enough to keep us on the air until we're ready to
-+- // officially decommit from VJ++. [Edited comment from
-+- // jkesselm]
-+- BufferedReader rd;
-+- try {
-+- rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
-+- } catch (java.io.UnsupportedEncodingException e) {
-+- rd = new BufferedReader(new InputStreamReader(is));
-+- }
-+-
-+- String factoryClassName = null;
-+- try {
-+- // XXX Does not handle all possible input as specified by the
-+- // Jar Service Provider specification
-+- factoryClassName = rd.readLine();
-+- } catch (IOException x) {
-+- // No provider found
-+- return null;
-+- }
-+- finally {
-+- try {
-+- // try to close the reader.
-+- rd.close();
-+- }
-+- // Ignore the exception.
-+- catch (IOException exc) {}
-+- }
-+-
-+- if (factoryClassName != null &&
-+- ! "".equals(factoryClassName)) {
-+- if (DEBUG) debugPrintln("found in resource, value="
-+- + factoryClassName);
-+-
-+- // Note: here we do not want to fall back to the current
-+- // ClassLoader because we want to avoid the case where the
-+- // resource file was found using one ClassLoader and the
-+- // provider class was instantiated using a different one.
-+- return factoryClassName;
-+- }
-+-
-+- // No provider found
-+- return null;
-+- }
-+-
-+- //
-+- // Classes
-+- //
-+-
-+- /**
-+- * A configuration error.
-+- */
-+- static class ConfigurationError
-+- extends Error {
-+- static final long serialVersionUID = -5782303800588797207L;
-+- //
-+- // Data
-+- //
-+-
-+- /** Exception. */
-+- private Exception exception;
-+-
-+- //
-+- // Constructors
-+- //
-+-
-+- /**
-+- * Construct a new instance with the specified detail string and
-+- * exception.
-+- */
-+- ConfigurationError(String msg, Exception x) {
-+- super(msg);
-+- this.exception = x;
-+- } // <init>(String,Exception)
-+-
-+- //
-+- // Public methods
-+- //
-+-
-+- /** Returns the exception associated to this error. */
-+- Exception getException() {
-+- return exception;
-+- } // getException():Exception
-+-
-+- } // class ConfigurationError
-+-
-+-} // class ObjectFactory
-+--- src/com/sun/org/apache/xpath/internal/functions/SecuritySupport12.java 2013-04-16 14:28:09.752156937 +0100
-++++ src/com/sun/org/apache/xpath/internal/functions/SecuritySupport12.java 1970-01-01 01:00:00.000000000 +0100
-+@@ -1,148 +0,0 @@
-+-/*
-+- * reserved comment block
-+- * DO NOT REMOVE OR ALTER!
-+- */
-+-/*
-+- * Copyright 2002-2004 The Apache Software Foundation.
-+- *
-+- * 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
-+- *
-+- * Unless required by applicable law or agreed to in writing, software
-+- * distributed under the License is distributed on an "AS IS" BASIS,
-+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+- * See the License for the specific language governing permissions and
-+- * limitations under the License.
-+- */
-+-/*
-+- * $Id: SecuritySupport12.java,v 1.1.2.1 2005/08/01 01:29:45 jeffsuttor Exp $
-+- */
-+-
-+-package com.sun.org.apache.xpath.internal.functions;
-+-
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-import java.io.FileNotFoundException;
-+-import java.io.InputStream;
-+-
-+-import java.security.AccessController;
-+-import java.security.PrivilegedAction;
-+-import java.security.PrivilegedActionException;
-+-import java.security.PrivilegedExceptionAction;
-+-
-+-import java.util.Properties;
-+-
-+-/**
-+- * This class is duplicated for each Xalan-Java subpackage so keep it in sync.
-+- * It is package private and therefore is not exposed as part of the Xalan-Java
-+- * API.
-+- *
-+- * Security related methods that only work on J2SE 1.2 and newer.
-+- */
-+-class SecuritySupport12 extends SecuritySupport {
-+-
-+- ClassLoader getContextClassLoader() {
-+- return (ClassLoader)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- ClassLoader cl = null;
-+- try {
-+- cl = Thread.currentThread().getContextClassLoader();
-+- } catch (SecurityException ex) { }
-+- return cl;
-+- }
-+- });
-+- }
-+-
-+- ClassLoader getSystemClassLoader() {
-+- return (ClassLoader)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- ClassLoader cl = null;
-+- try {
-+- cl = ClassLoader.getSystemClassLoader();
-+- } catch (SecurityException ex) {}
-+- return cl;
-+- }
-+- });
-+- }
-+-
-+- ClassLoader getParentClassLoader(final ClassLoader cl) {
-+- return (ClassLoader)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- ClassLoader parent = null;
-+- try {
-+- parent = cl.getParent();
-+- } catch (SecurityException ex) {}
-+-
-+- // eliminate loops in case of the boot
-+- // ClassLoader returning itself as a parent
-+- return (parent == cl) ? null : parent;
-+- }
-+- });
-+- }
-+-
-+- String getSystemProperty(final String propName) {
-+- return (String)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- return System.getProperty(propName);
-+- }
-+- });
-+- }
-+-
-+- FileInputStream getFileInputStream(final File file)
-+- throws FileNotFoundException
-+- {
-+- try {
-+- return (FileInputStream)
-+- AccessController.doPrivileged(new PrivilegedExceptionAction() {
-+- public Object run() throws FileNotFoundException {
-+- return new FileInputStream(file);
-+- }
-+- });
-+- } catch (PrivilegedActionException e) {
-+- throw (FileNotFoundException)e.getException();
-+- }
-+- }
-+-
-+- InputStream getResourceAsStream(final ClassLoader cl,
-+- final String name)
-+- {
-+- return (InputStream)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- InputStream ris;
-+- if (cl == null) {
-+- ris = ClassLoader.getSystemResourceAsStream(name);
-+- } else {
-+- ris = cl.getResourceAsStream(name);
-+- }
-+- return ris;
-+- }
-+- });
-+- }
-+-
-+- boolean getFileExists(final File f) {
-+- return ((Boolean)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- return new Boolean(f.exists());
-+- }
-+- })).booleanValue();
-+- }
-+-
-+- long getLastModified(final File f) {
-+- return ((Long)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- return new Long(f.lastModified());
-+- }
-+- })).longValue();
-+- }
-+-
-+-}
-+--- src/com/sun/org/apache/xpath/internal/functions/SecuritySupport.java 2013-04-16 14:28:09.752156937 +0100
-++++ src/com/sun/org/apache/xpath/internal/functions/SecuritySupport.java 1970-01-01 01:00:00.000000000 +0100
-+@@ -1,127 +0,0 @@
-+-/*
-+- * reserved comment block
-+- * DO NOT REMOVE OR ALTER!
-+- */
-+-/*
-+- * Copyright 2002-2004 The Apache Software Foundation.
-+- *
-+- * 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
-+- *
-+- * Unless required by applicable law or agreed to in writing, software
-+- * distributed under the License is distributed on an "AS IS" BASIS,
-+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+- * See the License for the specific language governing permissions and
-+- * limitations under the License.
-+- */
-+-/*
-+- * $Id: SecuritySupport.java,v 1.1.2.1 2005/08/01 01:29:39 jeffsuttor Exp $
-+- */
-+-
-+-package com.sun.org.apache.xpath.internal.functions;
-+-
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-import java.io.FileNotFoundException;
-+-import java.io.InputStream;
-+-
-+-import java.util.Properties;
-+-
-+-/**
-+- * This class is duplicated for each Xalan-Java subpackage so keep it in sync.
-+- * It is package private and therefore is not exposed as part of the Xalan-Java
-+- * API.
-+- *
-+- * Base class with security related methods that work on JDK 1.1.
-+- */
-+-class SecuritySupport {
-+-
-+- /*
-+- * Make this of type Object so that the verifier won't try to
-+- * prove its type, thus possibly trying to load the SecuritySupport12
-+- * class.
-+- */
-+- private static final Object securitySupport;
-+-
-+- static {
-+- SecuritySupport ss = null;
-+- try {
-+- Class c = Class.forName("java.security.AccessController");
-+- // if that worked, we're on 1.2.
-+- /*
-+- // don't reference the class explicitly so it doesn't
-+- // get dragged in accidentally.
-+- c = Class.forName("javax.mail.SecuritySupport12");
-+- Constructor cons = c.getConstructor(new Class[] { });
-+- ss = (SecuritySupport)cons.newInstance(new Object[] { });
-+- */
-+- /*
-+- * Unfortunately, we can't load the class using reflection
-+- * because the class is package private. And the class has
-+- * to be package private so the APIs aren't exposed to other
-+- * code that could use them to circumvent security. Thus,
-+- * we accept the risk that the direct reference might fail
-+- * on some JDK 1.1 JVMs, even though we would never execute
-+- * this code in such a case. Sigh...
-+- */
-+- ss = new SecuritySupport12();
-+- } catch (Exception ex) {
-+- // ignore it
-+- } finally {
-+- if (ss == null)
-+- ss = new SecuritySupport();
-+- securitySupport = ss;
-+- }
-+- }
-+-
-+- /**
-+- * Return an appropriate instance of this class, depending on whether
-+- * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
-+- */
-+- static SecuritySupport getInstance() {
-+- return (SecuritySupport)securitySupport;
-+- }
-+-
-+- ClassLoader getContextClassLoader() {
-+- return null;
-+- }
-+-
-+- ClassLoader getSystemClassLoader() {
-+- return null;
-+- }
-+-
-+- ClassLoader getParentClassLoader(ClassLoader cl) {
-+- return null;
-+- }
-+-
-+- String getSystemProperty(String propName) {
-+- return System.getProperty(propName);
-+- }
-+-
-+- FileInputStream getFileInputStream(File file)
-+- throws FileNotFoundException
-+- {
-+- return new FileInputStream(file);
-+- }
-+-
-+- InputStream getResourceAsStream(ClassLoader cl, String name) {
-+- InputStream ris;
-+- if (cl == null) {
-+- ris = ClassLoader.getSystemResourceAsStream(name);
-+- } else {
-+- ris = cl.getResourceAsStream(name);
-+- }
-+- return ris;
-+- }
-+-
-+- boolean getFileExists(File f) {
-+- return f.exists();
-+- }
-+-
-+- long getLastModified(File f) {
-+- return f.lastModified();
-+- }
-+-}
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2013-04-16 14:28:09.764157131 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1269,68 +1266,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "MUSTER ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java 2013-04-16 14:28:09.764157131 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_es.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1273,68 +1270,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("es", "ES"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java 2013-04-16 14:28:09.768157196 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_fr.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1270,68 +1267,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java 2013-04-16 14:28:09.768157196 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_it.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1272,68 +1269,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "MODELLO ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("it", "IT"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java 2013-04-16 14:28:09.768157196 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ja.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1269,68 +1266,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "\u30d1\u30bf\u30fc\u30f3 ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java 2013-04-16 14:28:09.764157131 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -938,68 +935,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("en", "US"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java 2013-04-16 14:28:09.768157196 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1269,68 +1266,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("ko", "KR"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java 2013-04-16 14:28:09.772157260 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_CN.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1270,68 +1267,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("zh", "CN"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "\u65e0\u6cd5\u88c5\u5165\u4efb\u4f55\u8d44\u6e90\u5305\u3002", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java 2013-04-16 14:28:09.772157260 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_zh_TW.java 2013-04-16 14:29:26.565394640 +0100
-+@@ -23,9 +23,6 @@
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+ import java.util.ListResourceBundle;
-+-import java.util.Locale;
-+-import java.util.MissingResourceException;
-+-import java.util.ResourceBundle;
-+
-+ /**
-+ * Set up error messages.
-+@@ -1270,68 +1267,4 @@
-+ /** Field QUERY_HEADER */
-+ public static final String QUERY_HEADER = "PATTERN ";
-+
-+-
-+- /**
-+- * Return a named ResourceBundle for a particular locale. This method mimics the behavior
-+- * of ResourceBundle.getBundle().
-+- *
-+- * @param className Name of local-specific subclass.
-+- * @return the ResourceBundle
-+- * @throws MissingResourceException
-+- */
-+- public static final XPATHErrorResources loadResourceBundle(String className)
-+- throws MissingResourceException
-+- {
-+-
-+- Locale locale = Locale.getDefault();
-+- String suffix = getResourceSuffix(locale);
-+-
-+- try
-+- {
-+-
-+- // first try with the given locale
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className
-+- + suffix, locale);
-+- }
-+- catch (MissingResourceException e)
-+- {
-+- try // try to fall back to en_US if we can't load
-+- {
-+-
-+- // Since we can't find the localized property file,
-+- // fall back to en_US.
-+- return (XPATHErrorResources) ResourceBundle.getBundle(className,
-+- new Locale("zh", "TW"));
-+- }
-+- catch (MissingResourceException e2)
-+- {
-+-
-+- // Now we are really in trouble.
-+- // very bad, definitely very bad...not going to get very far
-+- throw new MissingResourceException(
-+- "Could not load any resource bundles.", className, "");
-+- }
-+- }
-+- }
-+-
-+- /**
-+- * Return the resource file suffic for the indicated locale
-+- * For most locales, this will be based the language code. However
-+- * for Chinese, we do distinguish between Taiwan and PRC
-+- *
-+- * @param locale the locale
-+- * @return an String suffix which canbe appended to a resource name
-+- */
-+- private static final String getResourceSuffix(Locale locale)
-+- {
-+-
-+- String suffix = "_" + locale.getLanguage();
-+- String country = locale.getCountry();
-+-
-+- if (country.equals("TW"))
-+- suffix += "_" + country;
-+-
-+- return suffix;
-+- }
-+-
-+ }
-+--- src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java 2013-04-16 14:28:09.772157260 +0100
-++++ src/com/sun/org/apache/xpath/internal/res/XPATHMessages.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -22,130 +22,128 @@
-+ */
-+ package com.sun.org.apache.xpath.internal.res;
-+
-+-import java.util.ListResourceBundle;
-+-
-++import com.sun.org.apache.bcel.internal.util.SecuritySupport;
-+ import com.sun.org.apache.xml.internal.res.XMLMessages;
-++import java.util.ListResourceBundle;
-+
-+ /**
-+ * A utility class for issuing XPath error messages.
-++ *
-+ * @xsl.usage internal
-+ */
-+-public class XPATHMessages extends XMLMessages
-+-{
-+- /** The language specific resource object for XPath messages. */
-+- private static ListResourceBundle XPATHBundle = null;
-+-
-+- /** The class name of the XPath error message string table. */
-+- private static final String XPATH_ERROR_RESOURCES =
-+- "com.sun.org.apache.xpath.internal.res.XPATHErrorResources";
-+-
-+- /**
-+- * Creates a message from the specified key and replacement
-+- * arguments, localized to the given locale.
-+- *
-+- * @param msgKey The key for the message text.
-+- * @param args The arguments to be used as replacement text
-+- * in the message created.
-+- *
-+- * @return The formatted message string.
-+- */
-+- public static final String createXPATHMessage(String msgKey, Object args[]) //throws Exception
-+- {
-+- if (XPATHBundle == null)
-+- XPATHBundle = loadResourceBundle(XPATH_ERROR_RESOURCES);
-++public class XPATHMessages extends XMLMessages {
-+
-+- if (XPATHBundle != null)
-++ /**
-++ * The language specific resource object for XPath messages.
-++ */
-++ private static ListResourceBundle XPATHBundle = null;
-++ /**
-++ * The class name of the XPath error message string table.
-++ */
-++ private static final String XPATH_ERROR_RESOURCES =
-++ "com.sun.org.apache.xpath.internal.res.XPATHErrorResources";
-++
-++ /**
-++ * Creates a message from the specified key and replacement arguments,
-++ * localized to the given locale.
-++ *
-++ * @param msgKey The key for the message text.
-++ * @param args The arguments to be used as replacement text in the message
-++ * created.
-++ *
-++ * @return The formatted message string.
-++ */
-++ public static final String createXPATHMessage(String msgKey, Object args[]) //throws Exception
-+ {
-+- return createXPATHMsg(XPATHBundle, msgKey, args);
-+- }
-+- else
-+- return "Could not load any resource bundles.";
-+- }
-+-
-+- /**
-+- * Creates a message from the specified key and replacement
-+- * arguments, localized to the given locale.
-+- *
-+- * @param msgKey The key for the message text.
-+- * @param args The arguments to be used as replacement text
-+- * in the message created.
-+- *
-+- * @return The formatted warning string.
-+- */
-+- public static final String createXPATHWarning(String msgKey, Object args[]) //throws Exception
-+- {
-+- if (XPATHBundle == null)
-+- XPATHBundle = loadResourceBundle(XPATH_ERROR_RESOURCES);
-++ if (XPATHBundle == null) {
-++ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES);
-++ }
-+
-+- if (XPATHBundle != null)
-+- {
-+- return createXPATHMsg(XPATHBundle, msgKey, args);
-++ if (XPATHBundle != null) {
-++ return createXPATHMsg(XPATHBundle, msgKey, args);
-++ } else {
-++ return "Could not load any resource bundles.";
-++ }
-+ }
-+- else
-+- return "Could not load any resource bundles.";
-+- }
-+-
-+- /**
-+- * Creates a message from the specified key and replacement
-+- * arguments, localized to the given locale.
-+- *
-+- * @param fResourceBundle The resource bundle to use.
-+- * @param msgKey The message key to use.
-+- * @param args The arguments to be used as replacement text
-+- * in the message created.
-+- *
-+- * @return The formatted message string.
-+- */
-+- public static final String createXPATHMsg(ListResourceBundle fResourceBundle,
-+- String msgKey, Object args[]) //throws Exception
-+- {
-+-
-+- String fmsg = null;
-+- boolean throwex = false;
-+- String msg = null;
-+-
-+- if (msgKey != null)
-+- msg = fResourceBundle.getString(msgKey);
-+
-+- if (msg == null)
-++ /**
-++ * Creates a message from the specified key and replacement arguments,
-++ * localized to the given locale.
-++ *
-++ * @param msgKey The key for the message text.
-++ * @param args The arguments to be used as replacement text in the message
-++ * created.
-++ *
-++ * @return The formatted warning string.
-++ */
-++ public static final String createXPATHWarning(String msgKey, Object args[]) //throws Exception
-+ {
-+- msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
-+- throwex = true;
-++ if (XPATHBundle == null) {
-++ XPATHBundle = SecuritySupport.getResourceBundle(XPATH_ERROR_RESOURCES);
-++ }
-++
-++ if (XPATHBundle != null) {
-++ return createXPATHMsg(XPATHBundle, msgKey, args);
-++ } else {
-++ return "Could not load any resource bundles.";
-++ }
-+ }
-+
-+- if (args != null)
-++ /**
-++ * Creates a message from the specified key and replacement arguments,
-++ * localized to the given locale.
-++ *
-++ * @param fResourceBundle The resource bundle to use.
-++ * @param msgKey The message key to use.
-++ * @param args The arguments to be used as replacement text in the message
-++ * created.
-++ *
-++ * @return The formatted message string.
-++ */
-++ public static final String createXPATHMsg(ListResourceBundle fResourceBundle,
-++ String msgKey, Object args[]) //throws Exception
-+ {
-+- try
-+- {
-+
-+- // Do this to keep format from crying.
-+- // This is better than making a bunch of conditional
-+- // code all over the place.
-+- int n = args.length;
-+-
-+- for (int i = 0; i < n; i++)
-+- {
-+- if (null == args[i])
-+- args[i] = "";
-+- }
-+-
-+- fmsg = java.text.MessageFormat.format(msg, args);
-+- }
-+- catch (Exception e)
-+- {
-+- fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED);
-+- fmsg += " " + msg;
-+- }
-+- }
-+- else
-+- fmsg = msg;
-++ String fmsg = null;
-++ boolean throwex = false;
-++ String msg = null;
-+
-+- if (throwex)
-+- {
-+- throw new RuntimeException(fmsg);
-+- }
-++ if (msgKey != null) {
-++ msg = fResourceBundle.getString(msgKey);
-++ }
-++
-++ if (msg == null) {
-++ msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
-++ throwex = true;
-++ }
-+
-+- return fmsg;
-+- }
-++ if (args != null) {
-++ try {
-+
-++ // Do this to keep format from crying.
-++ // This is better than making a bunch of conditional
-++ // code all over the place.
-++ int n = args.length;
-++
-++ for (int i = 0; i < n; i++) {
-++ if (null == args[i]) {
-++ args[i] = "";
-++ }
-++ }
-++
-++ fmsg = java.text.MessageFormat.format(msg, args);
-++ } catch (Exception e) {
-++ fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED);
-++ fmsg += " " + msg;
-++ }
-++ } else {
-++ fmsg = msg;
-++ }
-++
-++ if (throwex) {
-++ throw new RuntimeException(fmsg);
-++ }
-++
-++ return fmsg;
-++ }
-+ }
-+--- src/com/sun/xml/internal/stream/writers/WriterUtility.java 2013-04-16 14:28:09.780157389 +0100
-++++ src/com/sun/xml/internal/stream/writers/WriterUtility.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -32,6 +32,7 @@
-+ import java.nio.charset.Charset;
-+ import java.nio.charset.CharsetEncoder;
-+ import com.sun.org.apache.xerces.internal.util.XMLChar;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+
-+ /**
-+ * Implements common xml writer functions.
-+@@ -240,7 +241,7 @@
-+
-+ private CharsetEncoder getDefaultEncoder(){
-+ try{
-+- String encoding = System.getProperty("file.encoding");
-++ String encoding = SecuritySupport.getSystemProperty("file.encoding");
-+ if(encoding != null){
-+ return Charset.forName(encoding).newEncoder();
-+ }
-+--- src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java 2013-04-16 14:28:09.780157389 +0100
-++++ src/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -53,6 +53,7 @@
-+ import com.sun.org.apache.xerces.internal.impl.PropertyManager;
-+ import com.sun.org.apache.xerces.internal.util.NamespaceSupport;
-+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+ import com.sun.org.apache.xerces.internal.xni.QName;
-+
-+ import com.sun.xml.internal.stream.util.ReadOnlyIterator;
-+@@ -339,7 +340,7 @@
-+ fEncoder = Charset.forName(encoding).newEncoder();
-+ }
-+ } else {
-+- encoding = System.getProperty("file.encoding");
-++ encoding = SecuritySupport.getSystemProperty("file.encoding");
-+ if (encoding != null && encoding.equalsIgnoreCase("utf-8")) {
-+ fWriter = new UTF8OutputStreamWriter(os);
-+ } else {
-+--- src/com/sun/xml/internal/stream/XMLEntityStorage.java 2013-04-16 14:28:09.772157260 +0100
-++++ src/com/sun/xml/internal/stream/XMLEntityStorage.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -36,6 +36,7 @@
-+ import com.sun.org.apache.xerces.internal.impl.PropertyManager;
-+ import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter;
-+ import com.sun.org.apache.xerces.internal.impl.Constants;
-++import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
-+
-+ /**
-+ *
-+@@ -410,7 +411,7 @@
-+ // get the user.dir property
-+ String userDir = "";
-+ try {
-+- userDir = System.getProperty("user.dir");
-++ userDir = SecuritySupport.getSystemProperty("user.dir");
-+ }
-+ catch (SecurityException se) {
-+ }
-+--- src/javax/xml/datatype/FactoryFinder.java 2013-04-16 14:28:09.784157453 +0100
-++++ src/javax/xml/datatype/FactoryFinder.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -44,6 +44,7 @@
-+ * @author Santiago.PericasGeertsen@sun.com
-+ */
-+ class FactoryFinder {
-++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
-+
-+ /**
-+ * Internal debug flag.
-+@@ -95,18 +96,24 @@
-+ * If the class loader supplied is <code>null</code>, first try using the
-+ * context class loader followed by the current (i.e. bootstrap) class
-+ * loader.
-++ *
-++ * Use bootstrap classLoader if cl = null and useBSClsLoader is true
-+ */
-+ static private Class getProviderClass(String className, ClassLoader cl,
-+- boolean doFallback) throws ClassNotFoundException
-++ boolean doFallback, boolean useBSClsLoader) throws ClassNotFoundException
-+ {
-+ try {
-+ if (cl == null) {
-+- cl = ss.getContextClassLoader();
-+- if (cl == null) {
-+- throw new ClassNotFoundException();
-+- }
-+- else {
-+- return cl.loadClass(className);
-++ if (useBSClsLoader) {
-++ return Class.forName(className, true, FactoryFinder.class.getClassLoader());
-++ } else {
-++ cl = ss.getContextClassLoader();
-++ if (cl == null) {
-++ throw new ClassNotFoundException();
-++ }
-++ else {
-++ return cl.loadClass(className);
-++ }
-+ }
-+ }
-+ else {
-+@@ -131,8 +138,8 @@
-+ * @param className Name of the concrete class corresponding to the
-+ * service provider
-+ *
-+- * @param cl ClassLoader to use to load the class, null means to use
-+- * the bootstrap ClassLoader
-++ * @param cl <code>ClassLoader</code> used to load the factory class. If <code>null</code>
-++ * current <code>Thread</code>'s context classLoader is used to load the factory class.
-+ *
-+ * @param doFallback True if the current ClassLoader should be tried as
-+ * a fallback if the class is not found using cl
-+@@ -140,8 +147,38 @@
-+ static Object newInstance(String className, ClassLoader cl, boolean doFallback)
-+ throws ConfigurationError
-+ {
-++ return newInstance(className, cl, doFallback, false);
-++ }
-++
-++ /**
-++ * Create an instance of a class. Delegates to method
-++ * <code>getProviderClass()</code> in order to load the class.
-++ *
-++ * @param className Name of the concrete class corresponding to the
-++ * service provider
-++ *
-++ * @param cl ClassLoader to use to load the class, null means to use
-++ * the bootstrap ClassLoader
-++ *
-++ * @param doFallback True if the current ClassLoader should be tried as
-++ * a fallback if the class is not found using cl
-++ *
-++ * @param useBSClsLoader True if cl=null actually meant bootstrap classLoader. This parameter
-++ * is needed since DocumentBuilderFactory/SAXParserFactory defined null as context classLoader.
-++ */
-++ static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
-++ throws ConfigurationError
-++ {
-++ // make sure we have access to restricted packages
-++ if (System.getSecurityManager() != null) {
-++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
-++ cl = null;
-++ useBSClsLoader = true;
-++ }
-++ }
-++
-+ try {
-+- Class providerClass = getProviderClass(className, cl, doFallback);
-++ Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
-+ Object instance = providerClass.newInstance();
-+ if (debug) { // Extra check to avoid computing cl strings
-+ dPrint("created new instance of " + providerClass +
-+@@ -244,6 +281,7 @@
-+
-+ // First try the Context ClassLoader
-+ ClassLoader cl = ss.getContextClassLoader();
-++ boolean useBSClsLoader = false;
-+ if (cl != null) {
-+ is = ss.getResourceAsStream(cl, serviceId);
-+
-+@@ -251,11 +289,13 @@
-+ if (is == null) {
-+ cl = FactoryFinder.class.getClassLoader();
-+ is = ss.getResourceAsStream(cl, serviceId);
-++ useBSClsLoader = true;
-+ }
-+ } else {
-+ // No Context ClassLoader, try the current ClassLoader
-+ cl = FactoryFinder.class.getClassLoader();
-+ is = ss.getResourceAsStream(cl, serviceId);
-++ useBSClsLoader = true;
-+ }
-+
-+ if (is == null) {
-+@@ -293,7 +333,7 @@
-+ // ClassLoader because we want to avoid the case where the
-+ // resource file was found using one ClassLoader and the
-+ // provider class was instantiated using a different one.
-+- return newInstance(factoryClassName, cl, false);
-++ return newInstance(factoryClassName, cl, false, useBSClsLoader);
-+ }
-+
-+ // No provider found
-+--- src/javax/xml/stream/FactoryFinder.java 2013-04-16 14:28:09.788157518 +0100
-++++ src/javax/xml/stream/FactoryFinder.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -25,14 +25,12 @@
-+
-+ package javax.xml.stream;
-+
-+-import java.io.InputStream;
-+-import java.io.IOException;
-+-import java.io.File;
-+-import java.io.FileInputStream;
-+-
-+-import java.util.Properties;
-+ import java.io.BufferedReader;
-++import java.io.File;
-++import java.io.IOException;
-++import java.io.InputStream;
-+ import java.io.InputStreamReader;
-++import java.util.Properties;
-+
-+ /**
-+ * <p>Implements pluggable Datatypes.</p>
-+@@ -43,6 +41,8 @@
-+ * @author Santiago.PericasGeertsen@sun.com
-+ */
-+ class FactoryFinder {
-++ // Check we have access to package.
-++ private static final String DEFAULT_PACKAGE = "com.sun.xml.internal.";
-+
-+ /**
-+ * Internal debug flag.
-+@@ -94,18 +94,24 @@
-+ * If the class loader supplied is <code>null</code>, first try using the
-+ * context class loader followed by the current (i.e. bootstrap) class
-+ * loader.
-++ *
-++ * Use bootstrap classLoader if cl = null and useBSClsLoader is true
-+ */
-+ static private Class getProviderClass(String className, ClassLoader cl,
-+- boolean doFallback) throws ClassNotFoundException
-++ boolean doFallback, boolean useBSClsLoader) throws ClassNotFoundException
-+ {
-+ try {
-+ if (cl == null) {
-+- cl = ss.getContextClassLoader();
-+- if (cl == null) {
-+- throw new ClassNotFoundException();
-+- }
-+- else {
-+- return cl.loadClass(className);
-++ if (useBSClsLoader) {
-++ return Class.forName(className, true, FactoryFinder.class.getClassLoader());
-++ } else {
-++ cl = ss.getContextClassLoader();
-++ if (cl == null) {
-++ throw new ClassNotFoundException();
-++ }
-++ else {
-++ return cl.loadClass(className);
-++ }
-+ }
-+ }
-+ else {
-+@@ -130,8 +136,8 @@
-+ * @param className Name of the concrete class corresponding to the
-+ * service provider
-+ *
-+- * @param cl ClassLoader to use to load the class, null means to use
-+- * the bootstrap ClassLoader
-++ * @param cl <code>ClassLoader</code> used to load the factory class. If <code>null</code>
-++ * current <code>Thread</code>'s context classLoader is used to load the factory class.
-+ *
-+ * @param doFallback True if the current ClassLoader should be tried as
-+ * a fallback if the class is not found using cl
-+@@ -139,8 +145,38 @@
-+ static Object newInstance(String className, ClassLoader cl, boolean doFallback)
-+ throws ConfigurationError
-+ {
-++ return newInstance(className, cl, doFallback, false);
-++ }
-++
-++ /**
-++ * Create an instance of a class. Delegates to method
-++ * <code>getProviderClass()</code> in order to load the class.
-++ *
-++ * @param className Name of the concrete class corresponding to the
-++ * service provider
-++ *
-++ * @param cl <code>ClassLoader</code> used to load the factory class. If <code>null</code>
-++ * current <code>Thread</code>'s context classLoader is used to load the factory class.
-++ *
-++ * @param doFallback True if the current ClassLoader should be tried as
-++ * a fallback if the class is not found using cl
-++ *
-++ * @param useBSClsLoader True if cl=null actually meant bootstrap classLoader. This parameter
-++ * is needed since DocumentBuilderFactory/SAXParserFactory defined null as context classLoader.
-++ */
-++ static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
-++ throws ConfigurationError
-++ {
-++ // make sure we have access to restricted packages
-++ if (System.getSecurityManager() != null) {
-++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
-++ cl = null;
-++ useBSClsLoader = true;
-++ }
-++ }
-++
-+ try {
-+- Class providerClass = getProviderClass(className, cl, doFallback);
-++ Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
-+ Object instance = providerClass.newInstance();
-+ if (debug) { // Extra check to avoid computing cl strings
-+ dPrint("created new instance of " + providerClass +
-+@@ -233,11 +269,11 @@
-+ if (ss.doesFileExist(f)) {
-+ dPrint("Read properties file "+f);
-+ cacheProps.load(ss.getFileInputStream(f));
-+- }
-+- }
-+ }
-+ }
-+ }
-++ }
-++ }
-+ factoryClassName = cacheProps.getProperty(factoryId);
-+
-+ if (factoryClassName != null) {
-+@@ -276,6 +312,7 @@
-+
-+ // First try the Context ClassLoader
-+ ClassLoader cl = ss.getContextClassLoader();
-++ boolean useBSClsLoader = false;
-+ if (cl != null) {
-+ is = ss.getResourceAsStream(cl, serviceId);
-+
-+@@ -283,11 +320,13 @@
-+ if (is == null) {
-+ cl = FactoryFinder.class.getClassLoader();
-+ is = ss.getResourceAsStream(cl, serviceId);
-++ useBSClsLoader = true;
-+ }
-+ } else {
-+ // No Context ClassLoader, try the current ClassLoader
-+ cl = FactoryFinder.class.getClassLoader();
-+ is = ss.getResourceAsStream(cl, serviceId);
-++ useBSClsLoader = true;
-+ }
-+
-+ if (is == null) {
-+@@ -325,7 +364,7 @@
-+ // ClassLoader because we want to avoid the case where the
-+ // resource file was found using one ClassLoader and the
-+ // provider class was instantiated using a different one.
-+- return newInstance(factoryClassName, cl, false);
-++ return newInstance(factoryClassName, cl, false, useBSClsLoader);
-+ }
-+
-+ // No provider found
-+--- src/javax/xml/validation/SchemaFactoryFinder.java 2013-04-16 14:28:09.800157711 +0100
-++++ src/javax/xml/validation/SchemaFactoryFinder.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -53,6 +53,7 @@
-+ *<p> Take care of restrictions imposed by java security model </p>
-+ */
-+ private static SecuritySupport ss = new SecuritySupport();
-++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
-+ /**
-+ * <p>Cache properties for performance.</p>
-+ */
-+@@ -212,28 +213,6 @@
-+ }
-+ }
-+
-+- /**
-+- // try to read from $java.home/lib/jaxp.properties
-+- try {
-+- String javah = ss.getSystemProperty( "java.home" );
-+- String configFile = javah + File.separator +
-+- "lib" + File.separator + "jaxp.properties";
-+- File f = new File( configFile );
-+- if( ss.doesFileExist(f)) {
-+- sf = loadFromProperty(
-+- propertyName,f.getAbsolutePath(), new FileInputStream(f));
-+- if(sf!=null) return sf;
-+- } else {
-+- debugPrintln("Tried to read "+ f.getAbsolutePath()+", but it doesn't exist.");
-+- }
-+- } catch(Throwable e) {
-+- if( debug ) {
-+- debugPrintln("failed to read $java.home/lib/jaxp.properties");
-+- e.printStackTrace();
-+- }
-+- }
-+- */
-+-
-+ // try META-INF/services files
-+ Iterator sitr = createServiceFileIterator();
-+ while(sitr.hasNext()) {
-+@@ -268,14 +247,20 @@
-+ */
-+ private Class createClass(String className) {
-+ Class clazz;
-++ // make sure we have access to restricted packages
-++ boolean internal = false;
-++ if (System.getSecurityManager() != null) {
-++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
-++ internal = true;
-++ }
-++ }
-+
-+- // use approprite ClassLoader
-+ try {
-+- if (classLoader != null) {
-+- clazz = classLoader.loadClass(className);
-+- } else {
-+- clazz = Class.forName(className);
-+- }
-++ if (classLoader != null && !internal) {
-++ clazz = classLoader.loadClass(className);
-++ } else {
-++ clazz = Class.forName(className);
-++ }
-+ } catch (Throwable t) {
-+ if(debug) t.printStackTrace();
-+ return null;
-+--- src/javax/xml/xpath/XPathFactoryFinder.java 2013-04-16 14:28:09.800157711 +0100
-++++ src/javax/xml/xpath/XPathFactoryFinder.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -47,6 +47,7 @@
-+ * @since 1.5
-+ */
-+ class XPathFactoryFinder {
-++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xpath.internal";
-+
-+ private static SecuritySupport ss = new SecuritySupport() ;
-+ /** debug support code. */
-+@@ -245,18 +246,25 @@
-+ */
-+ private Class createClass(String className) {
-+ Class clazz;
-+-
-+- // use approprite ClassLoader
-+- try {
-+- if (classLoader != null) {
-+- clazz = classLoader.loadClass(className);
-+- } else {
-+- clazz = Class.forName(className);
-+- }
-+- } catch (Throwable t) {
-+- if(debug) t.printStackTrace();
-+- return null;
-++ // make sure we have access to restricted packages
-++ boolean internal = false;
-++ if (System.getSecurityManager() != null) {
-++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
-++ internal = true;
-+ }
-++ }
-++
-++ // use approprite ClassLoader
-++ try {
-++ if (classLoader != null && !internal) {
-++ clazz = classLoader.loadClass(className);
-++ } else {
-++ clazz = Class.forName(className);
-++ }
-++ } catch (Throwable t) {
-++ if(debug) t.printStackTrace();
-++ return null;
-++ }
-+
-+ return clazz;
-+ }
-+--- src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java 2013-04-16 14:28:09.808157841 +0100
-++++ src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -104,6 +104,8 @@
-+ */
-+ private static final String FALLBACK_CLASS =
-+ "com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl";
-++ private static final String DEFAULT_PACKAGE =
-++ "com.sun.org.apache.xerces.internal.dom";
-+ /**
-+ * Private constructor.
-+ * @param srcs Vector List of DOMImplementationSources
-+@@ -168,10 +170,15 @@
-+ StringTokenizer st = new StringTokenizer(p);
-+ while (st.hasMoreTokens()) {
-+ String sourceName = st.nextToken();
-+- // Use context class loader, falling back to Class.forName
-+- // if and only if this fails...
-++ // make sure we have access to restricted packages
-++ boolean internal = false;
-++ if (System.getSecurityManager() != null) {
-++ if (sourceName != null && sourceName.startsWith(DEFAULT_PACKAGE)) {
-++ internal = true;
-++ }
-++ }
-+ Class sourceClass = null;
-+- if (classLoader != null) {
-++ if (classLoader != null && !internal) {
-+ sourceClass = classLoader.loadClass(sourceName);
-+ } else {
-+ sourceClass = Class.forName(sourceName);
-+--- src/org/xml/sax/helpers/NewInstance.java 2013-04-16 14:28:09.832158226 +0100
-++++ src/org/xml/sax/helpers/NewInstance.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -54,9 +54,10 @@
-+ * including versions of Java 2.</p>
-+ *
-+ * @author Edwin Goei, David Brownell
-++ * @version 2.0.1 (sax2r2)
-+ */
-+ class NewInstance {
-+-
-++ private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
-+ /**
-+ * Creates a new instance of the specified class name
-+ *
-+@@ -66,8 +67,16 @@
-+ throws ClassNotFoundException, IllegalAccessException,
-+ InstantiationException
-+ {
-++ // make sure we have access to restricted packages
-++ boolean internal = false;
-++ if (System.getSecurityManager() != null) {
-++ if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
-++ internal = true;
-++ }
-++ }
-++
-+ Class driverClass;
-+- if (classLoader == null) {
-++ if (classLoader == null || internal) {
-+ driverClass = Class.forName(className);
-+ } else {
-+ driverClass = classLoader.loadClass(className);
-+@@ -75,29 +84,4 @@
-+ return driverClass.newInstance();
-+ }
-+
-+- /**
-+- * Figure out which ClassLoader to use. For JDK 1.2 and later use
-+- * the context ClassLoader.
-+- */
-+- static ClassLoader getClassLoader ()
-+- {
-+- Method m = null;
-+-
-+- try {
-+- m = Thread.class.getMethod("getContextClassLoader", (Class[]) null);
-+- } catch (NoSuchMethodException e) {
-+- // Assume that we are running JDK 1.1, use the current ClassLoader
-+- return NewInstance.class.getClassLoader();
-+- }
-+-
-+- try {
-+- return (ClassLoader) m.invoke(Thread.currentThread(), (Object[]) null);
-+- } catch (IllegalAccessException e) {
-+- // assert(false)
-+- throw new UnknownError(e.getMessage());
-+- } catch (InvocationTargetException e) {
-+- // assert(e.getTargetException() instanceof SecurityException)
-+- throw new UnknownError(e.getMessage());
-+- }
-+- }
-+ }
-+--- src/org/xml/sax/helpers/ParserAdapter.java 2013-04-16 14:28:09.836158291 +0100
-++++ src/org/xml/sax/helpers/ParserAdapter.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -74,13 +74,14 @@
-+ *
-+ * @since SAX 2.0
-+ * @author David Megginson
-++ * @version 2.0.1 (sax2r2)
-+ * @see org.xml.sax.helpers.XMLReaderAdapter
-+ * @see org.xml.sax.XMLReader
-+ * @see org.xml.sax.Parser
-+ */
-+ public class ParserAdapter implements XMLReader, DocumentHandler
-+ {
-+-
-++ private static SecuritySupport ss = new SecuritySupport();
-+
-+ ////////////////////////////////////////////////////////////////////
-+ // Constructors.
-+@@ -102,7 +103,7 @@
-+ {
-+ super();
-+
-+- String driver = System.getProperty("org.xml.sax.parser");
-++ String driver = ss.getSystemProperty("org.xml.sax.parser");
-+
-+ try {
-+ setup(ParserFactory.makeParser());
-+--- src/org/xml/sax/helpers/ParserFactory.java 2013-04-16 14:28:09.836158291 +0100
-++++ src/org/xml/sax/helpers/ParserFactory.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -30,12 +30,6 @@
-+
-+ package org.xml.sax.helpers;
-+
-+-import java.lang.ClassNotFoundException;
-+-import java.lang.IllegalAccessException;
-+-import java.lang.InstantiationException;
-+-import java.lang.SecurityException;
-+-import java.lang.ClassCastException;
-+-
-+ import org.xml.sax.Parser;
-+
-+
-+@@ -69,9 +63,10 @@
-+ * interface.
-+ * @since SAX 1.0
-+ * @author David Megginson
-++ * @version 2.0.1 (sax2r2)
-+ */
-+ public class ParserFactory {
-+-
-++ private static SecuritySupport ss = new SecuritySupport();
-+
-+ /**
-+ * Private null constructor.
-+@@ -109,7 +104,7 @@
-+ NullPointerException,
-+ ClassCastException
-+ {
-+- String className = System.getProperty("org.xml.sax.parser");
-++ String className = ss.getSystemProperty("org.xml.sax.parser");
-+ if (className == null) {
-+ throw new NullPointerException("No value for sax.parser property");
-+ } else {
-+@@ -146,7 +141,7 @@
-+ ClassCastException
-+ {
-+ return (Parser) NewInstance.newInstance (
-+- NewInstance.getClassLoader (), className);
-++ ss.getContextClassLoader(), className);
-+ }
-+
-+ }
-+--- src/org/xml/sax/helpers/SecuritySupport.java 1970-01-01 01:00:00.000000000 +0100
-++++ src/org/xml/sax/helpers/SecuritySupport.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -0,0 +1,108 @@
-++/*
-++ * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * This code is free software; you can redistribute it and/or modify it
-++ * under the terms of the GNU General Public License version 2 only, as
-++ * published by the Free Software Foundation. Oracle designates this
-++ * particular file as subject to the "Classpath" exception as provided
-++ * by Oracle in the LICENSE file that accompanied this code.
-++ *
-++ * This code is distributed in the hope that it will be useful, but WITHOUT
-++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-++ * version 2 for more details (a copy is included in the LICENSE file that
-++ * accompanied this code).
-++ *
-++ * You should have received a copy of the GNU General Public License version
-++ * 2 along with this work; if not, write to the Free Software Foundation,
-++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-++ *
-++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-++ * or visit www.oracle.com if you need additional information or have any
-++ * questions.
-++ */
-++
-++package org.xml.sax.helpers;
-++
-++import java.io.*;
-++import java.security.*;
-++
-++/**
-++ * This class is duplicated for each JAXP subpackage so keep it in sync.
-++ * It is package private and therefore is not exposed as part of the JAXP
-++ * API.
-++ *
-++ * Security related methods that only work on J2SE 1.2 and newer.
-++ */
-++class SecuritySupport {
-++
-++
-++ ClassLoader getContextClassLoader() throws SecurityException{
-++ return (ClassLoader)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ ClassLoader cl = null;
-++ //try {
-++ cl = Thread.currentThread().getContextClassLoader();
-++ //} catch (SecurityException ex) { }
-++
-++ if (cl == null)
-++ cl = ClassLoader.getSystemClassLoader();
-++
-++ return cl;
-++ }
-++ });
-++ }
-++
-++ String getSystemProperty(final String propName) {
-++ return (String)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return System.getProperty(propName);
-++ }
-++ });
-++ }
-++
-++ FileInputStream getFileInputStream(final File file)
-++ throws FileNotFoundException
-++ {
-++ try {
-++ return (FileInputStream)
-++ AccessController.doPrivileged(new PrivilegedExceptionAction() {
-++ public Object run() throws FileNotFoundException {
-++ return new FileInputStream(file);
-++ }
-++ });
-++ } catch (PrivilegedActionException e) {
-++ throw (FileNotFoundException)e.getException();
-++ }
-++ }
-++
-++ InputStream getResourceAsStream(final ClassLoader cl,
-++ final String name)
-++ {
-++ return (InputStream)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ InputStream ris;
-++ if (cl == null) {
-++ ris = Object.class.getResourceAsStream(name);
-++ } else {
-++ ris = cl.getResourceAsStream(name);
-++ }
-++ return ris;
-++ }
-++ });
-++ }
-++
-++ boolean doesFileExist(final File f) {
-++ return ((Boolean)
-++ AccessController.doPrivileged(new PrivilegedAction() {
-++ public Object run() {
-++ return new Boolean(f.exists());
-++ }
-++ })).booleanValue();
-++ }
-++
-++}
-+--- src/org/xml/sax/helpers/XMLReaderFactory.java 2013-04-16 14:28:09.836158291 +0100
-++++ src/org/xml/sax/helpers/XMLReaderFactory.java 2013-04-16 14:29:26.569394704 +0100
-+@@ -34,8 +34,6 @@
-+ import java.io.BufferedReader;
-+ import java.io.InputStream;
-+ import java.io.InputStreamReader;
-+-import java.security.AccessController;
-+-import java.security.PrivilegedAction;
-+ import org.xml.sax.XMLReader;
-+ import org.xml.sax.SAXException;
-+
-+@@ -85,8 +83,8 @@
-+ }
-+
-+ private static final String property = "org.xml.sax.driver";
-++ private static SecuritySupport ss = new SecuritySupport();
-+
-+- private static String _clsFromJar = null;
-+ private static boolean _jarread = false;
-+ /**
-+ * Attempt to create an XMLReader from system defaults.
-+@@ -134,43 +132,45 @@
-+ throws SAXException
-+ {
-+ String className = null;
-+- ClassLoader loader = NewInstance.getClassLoader ();
-++ ClassLoader cl = ss.getContextClassLoader();
-+
-+ // 1. try the JVM-instance-wide system property
-+- try { className = System.getProperty (property); }
-+- catch (RuntimeException e) { /* normally fails for applets */ }
-++ try {
-++ className = ss.getSystemProperty(property);
-++ }
-++ catch (RuntimeException e) { /* continue searching */ }
-+
-+ // 2. if that fails, try META-INF/services/
-+ if (className == null) {
-+ if (!_jarread) {
-+- final ClassLoader loader1 = loader;
-+ _jarread = true;
-+- _clsFromJar = (String)
-+- AccessController.doPrivileged(new PrivilegedAction() {
-+- public Object run() {
-+- String clsName = null;
-+- try {
-+- String service = "META-INF/services/" + property;
-+- InputStream in;
-+- BufferedReader reader;
-+- if (loader1 == null)
-+- in = ClassLoader.getSystemResourceAsStream (service);
-+- else
-+- in = loader1.getResourceAsStream (service);
-+-
-+- if (in != null) {
-+- reader = new BufferedReader (
-+- new InputStreamReader (in, "UTF8"));
-+- clsName = reader.readLine ();
-+- in.close ();
-+- }
-+- } catch (Exception e) {
-++ String service = "META-INF/services/" + property;
-++ InputStream in;
-++ BufferedReader reader;
-++
-++ try {
-++ if (cl != null) {
-++ in = ss.getResourceAsStream(cl, service);
-++
-++ // If no provider found then try the current ClassLoader
-++ if (in == null) {
-++ cl = null;
-++ in = ss.getResourceAsStream(cl, service);
-+ }
-+- return clsName;
-++ } else {
-++ // No Context ClassLoader, try the current ClassLoader
-++ in = ss.getResourceAsStream(cl, service);
-+ }
-+- });
-++
-++ if (in != null) {
-++ reader = new BufferedReader (
-++ new InputStreamReader (in, "UTF8"));
-++ className = reader.readLine ();
-++ in.close ();
-++ }
-++ } catch (Exception e) {
-++ }
-+ }
-+- className = _clsFromJar;
-+ }
-+
-+ // 3. Distro-specific fallback
-+@@ -187,7 +187,7 @@
-+
-+ // do we know the XMLReader implementation class yet?
-+ if (className != null)
-+- return loadClass (loader, className);
-++ return loadClass (cl, className);
-+
-+ // 4. panic -- adapt any SAX1 parser
-+ try {
-+@@ -217,7 +217,7 @@
-+ public static XMLReader createXMLReader (String className)
-+ throws SAXException
-+ {
-+- return loadClass (NewInstance.getClassLoader (), className);
-++ return loadClass (ss.getContextClassLoader(), className);
-+ }
-+
-+ private static XMLReader loadClass (ClassLoader loader, String className)
---- jdk/src/share/lib/security/java.security 2013-04-16 14:28:12.392199476 +0100
-+++ jdk/src/share/lib/security/java.security 2013-04-16 14:29:26.545394318 +0100
-@@ -130,10 +130,27 @@
- package.access=sun.,\
- com.sun.xml.internal.bind.,\
- com.sun.xml.internal.org.jvnet.staxex.,\
-+ com.sun.xml.internal.stream.,\
- com.sun.xml.internal.ws.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
-- com.sun.jmx.
-+ com.sun.jmx.,\
-+ com.sun.org.apache.bcel.internal.,\
-+ com.sun.org.apache.regexp.internal.,\
-+ com.sun.org.apache.xerces.internal.,\
-+ com.sun.org.apache.xpath.internal.,\
-+ com.sun.org.apache.xalan.internal.extensions.,\
-+ com.sun.org.apache.xalan.internal.lib.,\
-+ com.sun.org.apache.xalan.internal.res.,\
-+ com.sun.org.apache.xalan.internal.templates.,\
-+ com.sun.org.apache.xalan.internal.xslt.,\
-+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
-+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
-+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
-+ com.sun.org.apache.xalan.internal.xsltc.util.,\
-+ com.sun.org.apache.xml.internal.res.,\
-+ com.sun.org.apache.xml.internal.serializer.utils.,\
-+ com.sun.org.apache.xml.internal.utils.
-
- #
- # List of comma-separated packages that start with or equal this string
-@@ -148,10 +165,27 @@
- package.definition=sun.,\
- com.sun.xml.internal.bind.,\
- com.sun.xml.internal.org.jvnet.staxex.,\
-+ com.sun.xml.internal.stream.,\
- com.sun.xml.internal.ws.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
-- com.sun.jmx.
-+ com.sun.jmx.,\
-+ com.sun.org.apache.bcel.internal.,\
-+ com.sun.org.apache.regexp.internal.,\
-+ com.sun.org.apache.xerces.internal.,\
-+ com.sun.org.apache.xpath.internal.,\
-+ com.sun.org.apache.xalan.internal.extensions.,\
-+ com.sun.org.apache.xalan.internal.lib.,\
-+ com.sun.org.apache.xalan.internal.res.,\
-+ com.sun.org.apache.xalan.internal.templates.,\
-+ com.sun.org.apache.xalan.internal.xslt.,\
-+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
-+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
-+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
-+ com.sun.org.apache.xalan.internal.xsltc.util.,\
-+ com.sun.org.apache.xml.internal.res.,\
-+ com.sun.org.apache.xml.internal.serializer.utils.,\
-+ com.sun.org.apache.xml.internal.utils.
-
- #
- # Determines whether this properties file can be appended to
---- jdk/src/share/lib/security/java.security-solaris 2013-04-16 14:28:12.396199540 +0100
-+++ jdk/src/share/lib/security/java.security-solaris 2013-04-16 14:30:42.026610629 +0100
-@@ -131,10 +131,27 @@
- package.access=sun.,\
- com.sun.xml.internal.bind.,\
- com.sun.xml.internal.org.jvnet.staxex.,\
-+ com.sun.xml.internal.stream.,\
- com.sun.xml.internal.ws.,\
- com.sun.imageio.
- com.sun.istack.internal.,\
-- com.sun.jmx.
-+ com.sun.jmx.,\
-+ com.sun.org.apache.bcel.internal.,\
-+ com.sun.org.apache.regexp.internal.,\
-+ com.sun.org.apache.xerces.internal.,\
-+ com.sun.org.apache.xpath.internal.,\
-+ com.sun.org.apache.xalan.internal.extensions.,\
-+ com.sun.org.apache.xalan.internal.lib.,\
-+ com.sun.org.apache.xalan.internal.res.,\
-+ com.sun.org.apache.xalan.internal.templates.,\
-+ com.sun.org.apache.xalan.internal.xslt.,\
-+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
-+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
-+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
-+ com.sun.org.apache.xalan.internal.xsltc.util.,\
-+ com.sun.org.apache.xml.internal.res.,\
-+ com.sun.org.apache.xml.internal.serializer.utils.,\
-+ com.sun.org.apache.xml.internal.utils.
-
- #
- # List of comma-separated packages that start with or equal this string
-@@ -149,10 +166,27 @@
- package.definition=sun.,\
- com.sun.xml.internal.bind.,\
- com.sun.xml.internal.org.jvnet.staxex.,\
-+ com.sun.xml.internal.stream.,\
- com.sun.xml.internal.ws.,\
- com.sun.imageio.
- com.sun.istack.internal.,\
-- com.sun.jmx.
-+ com.sun.jmx.,\
-+ com.sun.org.apache.bcel.internal.,\
-+ com.sun.org.apache.regexp.internal.,\
-+ com.sun.org.apache.xerces.internal.,\
-+ com.sun.org.apache.xpath.internal.,\
-+ com.sun.org.apache.xalan.internal.extensions.,\
-+ com.sun.org.apache.xalan.internal.lib.,\
-+ com.sun.org.apache.xalan.internal.res.,\
-+ com.sun.org.apache.xalan.internal.templates.,\
-+ com.sun.org.apache.xalan.internal.xslt.,\
-+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
-+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
-+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
-+ com.sun.org.apache.xalan.internal.xsltc.util.,\
-+ com.sun.org.apache.xml.internal.res.,\
-+ com.sun.org.apache.xml.internal.serializer.utils.,\
-+ com.sun.org.apache.xml.internal.utils.
-
- #
- # Determines whether this properties file can be appended to
---- jdk/src/share/lib/security/java.security-windows 2013-04-16 14:28:12.396199540 +0100
-+++ jdk/src/share/lib/security/java.security-windows 2013-04-16 14:31:35.027464728 +0100
-@@ -131,10 +131,27 @@
- package.access=sun.,\
- com.sun.xml.internal.bind.,\
- com.sun.xml.internal.org.jvnet.staxex.,\
-+ com.sun.xml.internal.stream.,\
- com.sun.xml.internal.ws.,\
- com.sun.imageio.
- com.sun.istack.internal.,\
-- com.sun.jmx.
-+ com.sun.jmx.,\
-+ com.sun.org.apache.bcel.internal.,\
-+ com.sun.org.apache.regexp.internal.,\
-+ com.sun.org.apache.xerces.internal.,\
-+ com.sun.org.apache.xpath.internal.,\
-+ com.sun.org.apache.xalan.internal.extensions.,\
-+ com.sun.org.apache.xalan.internal.lib.,\
-+ com.sun.org.apache.xalan.internal.res.,\
-+ com.sun.org.apache.xalan.internal.templates.,\
-+ com.sun.org.apache.xalan.internal.xslt.,\
-+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
-+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
-+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
-+ com.sun.org.apache.xalan.internal.xsltc.util.,\
-+ com.sun.org.apache.xml.internal.res.,\
-+ com.sun.org.apache.xml.internal.serializer.utils.,\
-+ com.sun.org.apache.xml.internal.utils.
-
- #
- # List of comma-separated packages that start with or equal this string
-@@ -149,10 +166,27 @@
- package.definition=sun.,\
- com.sun.xml.internal.bind.,\
- com.sun.xml.internal.org.jvnet.staxex.,\
-+ com.sun.xml.internal.stream.,\
- com.sun.xml.internal.ws.,\
- com.sun.imageio.
- com.sun.istack.internal.,\
-- com.sun.jmx.
-+ com.sun.jmx.,\
-+ com.sun.org.apache.bcel.internal.,\
-+ com.sun.org.apache.regexp.internal.,\
-+ com.sun.org.apache.xerces.internal.,\
-+ com.sun.org.apache.xpath.internal.,\
-+ com.sun.org.apache.xalan.internal.extensions.,\
-+ com.sun.org.apache.xalan.internal.lib.,\
-+ com.sun.org.apache.xalan.internal.res.,\
-+ com.sun.org.apache.xalan.internal.templates.,\
-+ com.sun.org.apache.xalan.internal.xslt.,\
-+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
-+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
-+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
-+ com.sun.org.apache.xalan.internal.xsltc.util.,\
-+ com.sun.org.apache.xml.internal.res.,\
-+ com.sun.org.apache.xml.internal.serializer.utils.,\
-+ com.sun.org.apache.xml.internal.utils.
-
- #
- # Determines whether this properties file can be appended to