8038962: KSS: javax.swing.text.html[.parser].ResourceLoader
Reviewed-by: alexsch, serb
--- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java Thu Apr 03 13:02:39 2014 +0400
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java Fri Apr 04 20:12:41 2014 +0400
@@ -26,7 +26,6 @@
import sun.awt.AppContext;
-import java.lang.reflect.Method;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
@@ -34,12 +33,13 @@
import java.net.URL;
import javax.swing.text.*;
import javax.swing.*;
-import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.plaf.TextUI;
import java.util.*;
import javax.accessibility.*;
import java.lang.ref.*;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
/**
* The Swing JEditorPane text component supports different kinds
@@ -415,14 +415,13 @@
* HTMLEditorKit class
* @return a stream representing the resource
*/
- static InputStream getResourceAsStream(String name) {
- try {
- return ResourceLoader.getResourceAsStream(name);
- } catch (Throwable e) {
- // If the class doesn't exist or we have some other
- // problem we just try to call getResourceAsStream directly.
- return HTMLEditorKit.class.getResourceAsStream(name);
- }
+ static InputStream getResourceAsStream(final String name) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction<InputStream>() {
+ public InputStream run() {
+ return HTMLEditorKit.class.getResourceAsStream(name);
+ }
+ });
}
/**
--- a/jdk/src/share/classes/javax/swing/text/html/ResourceLoader.java Thu Apr 03 13:02:39 2014 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1999, 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 javax.swing.text.html;
-
-import java.io.InputStream;
-
-/**
- * Simple class to load resources using the 1.2
- * security model. Since the html support is loaded
- * lazily, it's resources are potentially fetched with
- * applet code in the call stack. By providing this
- * functionality in a class that is only built on 1.2,
- * reflection can be used from the code that is also
- * built on 1.1 to call this functionality (and avoid
- * the evils of preprocessing). This functionality
- * is called from HTMLEditorKit.getResourceAsStream.
- *
- * @author Timothy Prinzing
- */
-class ResourceLoader implements java.security.PrivilegedAction {
-
- ResourceLoader(String name) {
- this.name = name;
- }
-
- public Object run() {
- Object o = HTMLEditorKit.class.getResourceAsStream(name);
- return o;
- }
-
- public static InputStream getResourceAsStream(String name) {
- java.security.PrivilegedAction a = new ResourceLoader(name);
- return (InputStream) java.security.AccessController.doPrivileged(a);
- }
-
- private String name;
-}
--- a/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java Thu Apr 03 13:02:39 2014 +0400
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java Fri Apr 04 20:12:41 2014 +0400
@@ -22,7 +22,6 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-
package javax.swing.text.html.parser;
import sun.awt.AppContext;
@@ -35,6 +34,8 @@
import java.io.ObjectInputStream;
import java.io.Reader;
import java.io.Serializable;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
/**
* Responsible for starting up a new DocumentParser
@@ -110,14 +111,13 @@
* ParserDelegator class.
* @returns a stream representing the resource
*/
- static InputStream getResourceAsStream(String name) {
- try {
- return ResourceLoader.getResourceAsStream(name);
- } catch (Throwable e) {
- // If the class doesn't exist or we have some other
- // problem we just try to call getResourceAsStream directly.
- return ParserDelegator.class.getResourceAsStream(name);
- }
+ static InputStream getResourceAsStream(final String name) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction<InputStream>() {
+ public InputStream run() {
+ return ParserDelegator.class.getResourceAsStream(name);
+ }
+ });
}
private void readObject(ObjectInputStream s)
--- a/jdk/src/share/classes/javax/swing/text/html/parser/ResourceLoader.java Thu Apr 03 13:02:39 2014 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1999, 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 javax.swing.text.html.parser;
-
-import java.io.InputStream;
-
-/**
- * Simple class to load resources using the 1.2
- * security model. Since the html support is loaded
- * lazily, it's resources are potentially fetched with
- * applet code in the call stack. By providing this
- * functionality in a class that is only built on 1.2,
- * reflection can be used from the code that is also
- * built on 1.1 to call this functionality (and avoid
- * the evils of preprocessing). This functionality
- * is called from ParserDelegator.getResourceAsStream.
- *
- * @author Timothy Prinzing
- */
-class ResourceLoader implements java.security.PrivilegedAction {
-
- ResourceLoader(String name) {
- this.name = name;
- }
-
- public Object run() {
- Object o = ParserDelegator.class.getResourceAsStream(name);
- return o;
- }
-
- public static InputStream getResourceAsStream(String name) {
- java.security.PrivilegedAction a = new ResourceLoader(name);
- return (InputStream) java.security.AccessController.doPrivileged(a);
- }
-
- private String name;
-}
--- a/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java Thu Apr 03 13:02:39 2014 +0400
+++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java Fri Apr 04 20:12:41 2014 +0400
@@ -27,9 +27,9 @@
import java.lang.*;
import java.util.*;
import java.io.*;
-import java.awt.Font;
import java.awt.Color;
-
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.swing.text.*;
/**
@@ -558,16 +558,14 @@
{
char[] set = characterSets.get(name);
if (set == null) {
- InputStream charsetStream;
- charsetStream = java.security.AccessController.
- doPrivileged(new java.security.PrivilegedAction<InputStream>() {
- public InputStream run() {
- return RTFReader.class.getResourceAsStream
- ("charsets/" + name + ".txt");
- }
- });
- set = readCharset(charsetStream);
- defineCharacterSet(name, set);
+ InputStream charsetStream = AccessController.doPrivileged(
+ new PrivilegedAction<InputStream>() {
+ public InputStream run() {
+ return RTFReader.class.getResourceAsStream("charsets/" + name + ".txt");
+ }
+ });
+ set = readCharset(charsetStream);
+ defineCharacterSet(name, set);
}
return set;
}