changeset 8193:a159bbbd3eb3

8068320: Limit applet requests Reviewed-by: prr, skoivu, art
author serb
date Mon, 19 Jan 2015 14:31:16 +0300
parents c47c01e17e6d
children c20cea23feea
files make/tools/swing-beans/SwingBeanInfo.template src/share/classes/java/beans/Beans.java src/share/classes/java/beans/SimpleBeanInfo.java
diffstat 3 files changed, 54 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/make/tools/swing-beans/SwingBeanInfo.template	Fri Jan 16 23:36:58 2015 +0400
+++ b/make/tools/swing-beans/SwingBeanInfo.template	Mon Jan 19 14:31:16 2015 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, 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
@@ -28,6 +28,7 @@
 import java.beans.BeanDescriptor;
 import java.beans.PropertyDescriptor;
 import java.awt.Image;
+import java.security.PrivilegedAction;
 
 import sun.swing.BeanInfoUtils;
 
@@ -92,25 +93,42 @@
     /**
      * @return an icon of the specified kind for @(BeanClassName)
      */
-    public Image getIcon(int kind) {
+    public Image getIcon(final int kind) {
         Image i;
         switch (kind){
             case ICON_COLOR_32x32:
-                i = loadImage("beaninfo/images/@(BeanClassName)Color32.gif");
-                return ((i == null) ? loadImage("beaninfo/images/JComponentColor32.gif") : i);
+                i = loadStandardImage("beaninfo/images/@(BeanClassName)Color32.gif");
+                return ((i == null) ? loadStandardImage("beaninfo/images/JComponentColor32.gif") : i);
             case ICON_COLOR_16x16:
-                i = loadImage("beaninfo/images/@(BeanClassName)Color16.gif");
-                return ((i == null) ? loadImage("beaninfo/images/JComponentColor16.gif") : i);
+                i = loadStandardImage("beaninfo/images/@(BeanClassName)Color16.gif");
+                return ((i == null) ? loadStandardImage("beaninfo/images/JComponentColor16.gif") : i);
             case ICON_MONO_32x32:
-                i = loadImage("beaninfo/images/@(BeanClassName)Mono32.gif");
-                return ((i == null) ? loadImage("beaninfo/images/JComponentMono32.gif") : i);		  
+                i = loadStandardImage("beaninfo/images/@(BeanClassName)Mono32.gif");
+                return ((i == null) ? loadStandardImage("beaninfo/images/JComponentMono32.gif") : i);         
             case ICON_MONO_16x16:
-                i = loadImage("beaninfo/images/@(BeanClassName)Mono16.gif");
-                return ((i == null) ? loadImage("beaninfo/images/JComponentMono16.gif") : i);		  
+                i = loadStandardImage("beaninfo/images/@(BeanClassName)Mono16.gif");
+                return ((i == null) ? loadStandardImage("beaninfo/images/JComponentMono16.gif") : i);         
             default:
                 return super.getIcon(kind);
         }
     }
+
+    /**
+     * This is a utility method to help in loading standard icon images.
+     *
+     * @param  resourceName A pathname relative to the directory holding the
+     *         class file of the current class
+     * @return an image object. May be null if the load failed.
+     * @see java.beans.SimpleBeanInfo#loadImage(String)
+     */
+    private Image loadStandardImage(final String resourceName) {
+        return (Image) java.security.AccessController.doPrivileged(
+                new PrivilegedAction() {
+                    public Object run() {
+                        return loadImage(resourceName);
+                    }
+                });
+    }    
 }
 
 
--- a/src/share/classes/java/beans/Beans.java	Fri Jan 16 23:36:58 2015 +0400
+++ b/src/share/classes/java/beans/Beans.java	Mon Jan 19 14:31:16 2015 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -46,9 +46,6 @@
 
 import java.net.URL;
 
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -177,16 +174,10 @@
 
         // Try to find a serialized object with this name
         final String serName = beanName.replace('.','/').concat(".ser");
-        final ClassLoader loader = cls;
-        ins = (InputStream)AccessController.doPrivileged
-            (new PrivilegedAction() {
-                public Object run() {
-                    if (loader == null)
-                        return ClassLoader.getSystemResourceAsStream(serName);
-                    else
-                        return loader.getResourceAsStream(serName);
-                }
-        });
+        if (cls == null)
+            ins =  ClassLoader.getSystemResourceAsStream(serName);
+        else
+            ins =  cls.getResourceAsStream(serName);
         if (ins != null) {
             try {
                 if (cls == null) {
@@ -277,19 +268,10 @@
                     URL docBase   = null;
 
                     // Now get the URL correponding to the resource name.
-
-                    final ClassLoader cloader = cls;
-                    objectUrl = (URL)
-                        AccessController.doPrivileged
-                        (new PrivilegedAction() {
-                            public Object run() {
-                                if (cloader == null)
-                                    return ClassLoader.getSystemResource
-                                                                (resourceName);
-                                else
-                                    return cloader.getResource(resourceName);
-                            }
-                    });
+                    if (cls == null) {
+                        objectUrl = ClassLoader.getSystemResource(resourceName);
+                    } else
+                        objectUrl = cls.getResource(resourceName);
 
                     // If we found a URL, we try to locate the docbase by taking
                     // of the final path name component, and the code base by taking
--- a/src/share/classes/java/beans/SimpleBeanInfo.java	Fri Jan 16 23:36:58 2015 +0400
+++ b/src/share/classes/java/beans/SimpleBeanInfo.java	Mon Jan 19 14:31:16 2015 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -25,6 +25,11 @@
 
 package java.beans;
 
+import java.awt.Image;
+import java.awt.Toolkit;
+import java.awt.image.ImageProducer;
+import java.net.URL;
+
 /**
  * This is a support class to make it easier for people to provide
  * BeanInfo classes.
@@ -99,7 +104,7 @@
      * Claim there are no icons available.  You can override
      * this if you want to provide icons for your bean.
      */
-    public java.awt.Image getIcon(int iconKind) {
+    public Image getIcon(int iconKind) {
         return null;
     }
 
@@ -114,33 +119,17 @@
      *          "wombat.gif".
      * @return  an image object.  May be null if the load failed.
      */
-    public java.awt.Image loadImage(final String resourceName) {
+    public Image loadImage(final String resourceName) {
         try {
-            final Class c = getClass();
-            java.awt.image.ImageProducer ip = (java.awt.image.ImageProducer)
-                java.security.AccessController.doPrivileged(
-                new java.security.PrivilegedAction() {
-                    public Object run() {
-                        java.net.URL url;
-                        if ((url = c.getResource(resourceName)) == null) {
-                            return null;
-                        } else {
-                            try {
-                                return url.getContent();
-                            } catch (java.io.IOException ioe) {
-                                return null;
-                            }
-                        }
-                    }
-            });
-
-            if (ip == null)
-                return null;
-            java.awt.Toolkit tk = java.awt.Toolkit.getDefaultToolkit();
-            return tk.createImage(ip);
-        } catch (Exception ex) {
-            return null;
+            final URL url = getClass().getResource(resourceName);
+            if (url != null) {
+                final ImageProducer ip = (ImageProducer) url.getContent();
+                if (ip != null) {
+                    return Toolkit.getDefaultToolkit().createImage(ip);
+                }
+            }
+        } catch (final Exception ignored) {
         }
+        return null;
     }
-
 }