OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / libcore / luni / src / main / java / org / apache / xml / serializer / SecuritySupport12.java
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the  "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 /*
19  * $Id: SecuritySupport12.java 468654 2006-10-28 07:09:23Z minchau $
20  */
21
22 package org.apache.xml.serializer;
23
24 import java.io.File;
25 import java.io.FileInputStream;
26 import java.io.FileNotFoundException;
27 import java.io.InputStream;
28 import java.security.AccessController;
29 import java.security.PrivilegedAction;
30 import java.security.PrivilegedActionException;
31 import java.security.PrivilegedExceptionAction;
32
33 /**
34  * This class is duplicated for each Xalan-Java subpackage so keep it in sync.
35  * It is package private and therefore is not exposed as part of the Xalan-Java
36  * API.
37  *
38  * Security related methods that only work on J2SE 1.2 and newer.
39  */
40 class SecuritySupport12 extends SecuritySupport {
41
42     ClassLoader getContextClassLoader() {
43         return (ClassLoader)
44                 AccessController.doPrivileged(new PrivilegedAction() {
45             public Object run() {
46                 ClassLoader cl = null;
47                 try {
48                     cl = Thread.currentThread().getContextClassLoader();
49                 } catch (SecurityException ex) { }
50                 return cl;
51             }
52         });
53     }
54
55     ClassLoader getSystemClassLoader() {
56         return (ClassLoader)
57             AccessController.doPrivileged(new PrivilegedAction() {
58                 public Object run() {
59                     ClassLoader cl = null;
60                     try {
61                         cl = ClassLoader.getSystemClassLoader();
62                     } catch (SecurityException ex) {}
63                     return cl;
64                 }
65             });
66     }
67
68     ClassLoader getParentClassLoader(final ClassLoader cl) {
69         return (ClassLoader)
70             AccessController.doPrivileged(new PrivilegedAction() {
71                 public Object run() {
72                     ClassLoader parent = null;
73                     try {
74                         parent = cl.getParent();
75                     } catch (SecurityException ex) {}
76
77                     // eliminate loops in case of the boot
78                     // ClassLoader returning itself as a parent
79                     return (parent == cl) ? null : parent;
80                 }
81             });
82     }
83
84     String getSystemProperty(final String propName) {
85         return (String)
86             AccessController.doPrivileged(new PrivilegedAction() {
87                 public Object run() {
88                     return System.getProperty(propName);
89                 }
90             });
91     }
92
93     FileInputStream getFileInputStream(final File file)
94         throws FileNotFoundException
95     {
96         try {
97             return (FileInputStream)
98                 AccessController.doPrivileged(new PrivilegedExceptionAction() {
99                     public Object run() throws FileNotFoundException {
100                         return new FileInputStream(file);
101                     }
102                 });
103         } catch (PrivilegedActionException e) {
104             throw (FileNotFoundException)e.getException();
105         }
106     }
107
108     InputStream getResourceAsStream(final ClassLoader cl,
109                                            final String name)
110     {
111         return (InputStream)
112             AccessController.doPrivileged(new PrivilegedAction() {
113                 public Object run() {
114                     InputStream ris;
115                     if (cl == null) {
116                         ris = ClassLoader.getSystemResourceAsStream(name);
117                     } else {
118                         ris = cl.getResourceAsStream(name);
119                     }
120                     return ris;
121                 }
122             });
123     }
124     
125     boolean getFileExists(final File f) {
126     return ((Boolean)
127             AccessController.doPrivileged(new PrivilegedAction() {
128                 public Object run() {
129                     return new Boolean(f.exists());
130                 }
131             })).booleanValue();
132     }
133     
134     long getLastModified(final File f) {
135     return ((Long)
136             AccessController.doPrivileged(new PrivilegedAction() {
137                 public Object run() {
138                     return new Long(f.lastModified());
139                 }
140             })).longValue();
141     }
142         
143 }