~vcs-imports/xena/trunk

« back to all changes in this revision

Viewing changes to ext/src/xalan-j_2_7_1/src/org/apache/xml/serializer/SecuritySupport12.java

  • Committer: matthewoliver
  • Date: 2009-12-10 03:18:07 UTC
  • Revision ID: vcs-imports@canonical.com-20091210031807-l086qguzdlljtkl9
Merged Xena Testing into Xena Stable for the Xena 5 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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,v 1.2 2009/12/10 03:18:07 matthewoliver Exp $
 
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
}