01: /*
02: * Portions Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
03: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04: *
05: * This code is free software; you can redistribute it and/or modify it
06: * under the terms of the GNU General Public License version 2 only, as
07: * published by the Free Software Foundation. Sun designates this
08: * particular file as subject to the "Classpath" exception as provided
09: * by Sun in the LICENSE file that accompanied this code.
10: *
11: * This code is distributed in the hope that it will be useful, but WITHOUT
12: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * version 2 for more details (a copy is included in the LICENSE file that
15: * accompanied this code).
16: *
17: * You should have received a copy of the GNU General Public License version
18: * 2 along with this work; if not, write to the Free Software Foundation,
19: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20: *
21: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22: * CA 95054 USA or visit www.sun.com if you need additional information or
23: * have any questions.
24: */
25:
26: /*
27: *******************************************************************************
28: * (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
29: * *
30: * The original version of this source code and documentation is copyrighted *
31: * and owned by IBM, These materials are provided under terms of a License *
32: * Agreement between IBM and Sun. This technology is protected by multiple *
33: * US and International patents. This notice and attribution to IBM may not *
34: * to removed. *
35: *******************************************************************************
36: */
37:
38: package sun.text.normalizer;
39:
40: import java.io.InputStream;
41: import java.net.URL;
42: import java.security.AccessController;
43: import java.security.PrivilegedAction;
44: import java.util.MissingResourceException;
45:
46: /**
47: * Provides access to ICU data files as InputStreams. Implements security checking.
48: */
49: public final class ICUData {
50:
51: private static InputStream getStream(final Class root,
52: final String resourceName, boolean required) {
53: InputStream i = null;
54:
55: if (System.getSecurityManager() != null) {
56: i = (InputStream) AccessController
57: .doPrivileged(new PrivilegedAction() {
58: public Object run() {
59: return root
60: .getResourceAsStream(resourceName);
61: }
62: });
63: } else {
64: i = root.getResourceAsStream(resourceName);
65: }
66:
67: if (i == null && required) {
68: throw new MissingResourceException("could not locate data",
69: root.getPackage().getName(), resourceName);
70: }
71: return i;
72: }
73:
74: /*
75: * Convenience override that calls getStream(ICUData.class, resourceName, false);
76: */
77: public static InputStream getStream(String resourceName) {
78: return getStream(ICUData.class, resourceName, false);
79: }
80:
81: /*
82: * Convenience method that calls getStream(ICUData.class, resourceName, true).
83: */
84: public static InputStream getRequiredStream(String resourceName) {
85: return getStream(ICUData.class, resourceName, true);
86: }
87: }
|