jaxp/src/com/sun/org/apache/bcel/internal/util/SecuritySupport.java
author joehw
Mon, 18 Feb 2013 11:33:35 -0800
changeset 16953 a44e04deb948
permissions -rw-r--r--
6657673: Issues with JAXP Reviewed-by: alanb, lancea, ahgross, mullan
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16953
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     1
/*
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     2
 * reserved comment block
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     3
 * DO NOT REMOVE OR ALTER!
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     4
 */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     5
/*
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     6
 * Copyright 2002-2004 The Apache Software Foundation.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     7
 *
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     8
 * Licensed under the Apache License, Version 2.0 (the "License");
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
     9
 * you may not use this file except in compliance with the License.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    10
 * You may obtain a copy of the License at
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    11
 *
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    12
 *     http://www.apache.org/licenses/LICENSE-2.0
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    13
 *
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    14
 * Unless required by applicable law or agreed to in writing, software
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    15
 * distributed under the License is distributed on an "AS IS" BASIS,
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    17
 * See the License for the specific language governing permissions and
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    18
 * limitations under the License.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    19
 */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    20
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    21
package com.sun.org.apache.bcel.internal.util;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    22
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    23
import java.io.File;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    24
import java.io.FileInputStream;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    25
import java.io.FileNotFoundException;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    26
import java.io.FilenameFilter;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    27
import java.io.InputStream;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    28
import java.lang.ClassLoader;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    29
import java.security.AccessController;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    30
import java.security.PrivilegedAction;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    31
import java.security.PrivilegedActionException;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    32
import java.security.PrivilegedExceptionAction;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    33
import java.util.ListResourceBundle;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    34
import java.util.Locale;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    35
import java.util.MissingResourceException;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    36
import java.util.ResourceBundle;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    37
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    38
/**
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    39
 * This class is duplicated for each subpackage so keep it in sync. It is
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    40
 * package private and therefore is not exposed as part of any API.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    41
 *
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    42
 * @xerces.internal
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    43
 */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    44
public final class SecuritySupport {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    45
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    46
    private static final SecuritySupport securitySupport = new SecuritySupport();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    47
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    48
    /**
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    49
     * Return an instance of this class.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    50
     */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    51
    public static SecuritySupport getInstance() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    52
        return securitySupport;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    53
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    54
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    55
    static ClassLoader getContextClassLoader() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    56
        return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    57
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    58
                ClassLoader cl = null;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    59
                try {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    60
                    cl = Thread.currentThread().getContextClassLoader();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    61
                } catch (SecurityException ex) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    62
                }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    63
                return cl;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    64
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    65
        });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    66
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    67
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    68
    static ClassLoader getSystemClassLoader() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    69
        return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    70
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    71
                ClassLoader cl = null;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    72
                try {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    73
                    cl = ClassLoader.getSystemClassLoader();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    74
                } catch (SecurityException ex) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    75
                }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    76
                return cl;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    77
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    78
        });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    79
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    80
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    81
    static ClassLoader getParentClassLoader(final ClassLoader cl) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    82
        return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    83
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    84
                ClassLoader parent = null;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    85
                try {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    86
                    parent = cl.getParent();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    87
                } catch (SecurityException ex) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    88
                }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    89
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    90
                // eliminate loops in case of the boot
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    91
                // ClassLoader returning itself as a parent
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    92
                return (parent == cl) ? null : parent;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    93
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    94
        });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    95
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    96
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    97
    public static String getSystemProperty(final String propName) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    98
        return (String) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
    99
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   100
                return System.getProperty(propName);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   101
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   102
        });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   103
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   104
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   105
    static FileInputStream getFileInputStream(final File file)
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   106
            throws FileNotFoundException {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   107
        try {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   108
            return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   109
                public Object run() throws FileNotFoundException {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   110
                    return new FileInputStream(file);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   111
                }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   112
            });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   113
        } catch (PrivilegedActionException e) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   114
            throw (FileNotFoundException) e.getException();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   115
        }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   116
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   117
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   118
    /**
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   119
     * Return resource using the same classloader for the ObjectFactory by
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   120
     * default or bootclassloader when Security Manager is in place
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   121
     */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   122
    public static InputStream getResourceAsStream(final String name) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   123
        if (System.getSecurityManager() != null) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   124
            return getResourceAsStream(null, name);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   125
        } else {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   126
            return getResourceAsStream(findClassLoader(), name);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   127
        }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   128
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   129
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   130
    public static InputStream getResourceAsStream(final ClassLoader cl,
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   131
            final String name) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   132
        return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   133
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   134
                InputStream ris;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   135
                if (cl == null) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   136
                    ris = Object.class.getResourceAsStream("/" + name);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   137
                } else {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   138
                    ris = cl.getResourceAsStream(name);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   139
                }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   140
                return ris;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   141
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   142
        });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   143
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   144
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   145
    /**
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   146
     * Gets a resource bundle using the specified base name, the default locale,
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   147
     * and the caller's class loader.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   148
     *
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   149
     * @param bundle the base name of the resource bundle, a fully qualified
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   150
     * class name
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   151
     * @return a resource bundle for the given base name and the default locale
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   152
     */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   153
    public static ListResourceBundle getResourceBundle(String bundle) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   154
        return getResourceBundle(bundle, Locale.getDefault());
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   155
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   156
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   157
    /**
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   158
     * Gets a resource bundle using the specified base name and locale, and the
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   159
     * caller's class loader.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   160
     *
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   161
     * @param bundle the base name of the resource bundle, a fully qualified
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   162
     * class name
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   163
     * @param locale the locale for which a resource bundle is desired
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   164
     * @return a resource bundle for the given base name and locale
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   165
     */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   166
    public static ListResourceBundle getResourceBundle(final String bundle, final Locale locale) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   167
        return AccessController.doPrivileged(new PrivilegedAction<ListResourceBundle>() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   168
            public ListResourceBundle run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   169
                try {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   170
                    return (ListResourceBundle) ResourceBundle.getBundle(bundle, locale);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   171
                } catch (MissingResourceException e) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   172
                    try {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   173
                        return (ListResourceBundle) ResourceBundle.getBundle(bundle, new Locale("en", "US"));
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   174
                    } catch (MissingResourceException e2) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   175
                        throw new MissingResourceException(
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   176
                                "Could not load any resource bundle by " + bundle, bundle, "");
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   177
                    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   178
                }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   179
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   180
        });
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   181
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   182
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   183
    public static String[] getFileList(final File f, final FilenameFilter filter) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   184
        return ((String[]) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   185
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   186
                return f.list(filter);
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   187
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   188
        }));
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   189
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   190
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   191
    public static boolean getFileExists(final File f) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   192
        return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   193
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   194
                return f.exists() ? Boolean.TRUE : Boolean.FALSE;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   195
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   196
        })).booleanValue();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   197
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   198
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   199
    static long getLastModified(final File f) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   200
        return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   201
            public Object run() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   202
                return new Long(f.lastModified());
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   203
            }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   204
        })).longValue();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   205
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   206
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   207
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   208
    /**
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   209
     * Figure out which ClassLoader to use.
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   210
     */
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   211
    public static ClassLoader findClassLoader()
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   212
    {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   213
        if (System.getSecurityManager()!=null) {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   214
            //this will ensure bootclassloader is used
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   215
            return null;
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   216
        } else {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   217
            return SecuritySupport.class.getClassLoader();
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   218
        }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   219
    } // findClassLoader():ClassLoader
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   220
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   221
    private SecuritySupport() {
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   222
    }
a44e04deb948 6657673: Issues with JAXP
joehw
parents:
diff changeset
   223
}