src/share/classes/java/util/logging/StreamHandler.java

Print this page

        

*** 25,34 **** --- 25,36 ---- package java.util.logging; import java.io.*; + import java.security.AccessController; + import java.security.PrivilegedAction; /** * Stream based logging <tt>Handler</tt>. * <p> * This is primarily intended as a base class or support class to
*** 75,90 **** public class StreamHandler extends Handler { private OutputStream output; private boolean doneHeader; private volatile Writer writer; ! // Private method to configure a StreamHandler from LogManager // properties and/or default values as specified in the class // javadoc. ! private void configure() { LogManager manager = LogManager.getLogManager(); ! String cname = getClass().getName(); setLevel(manager.getLevelProperty(cname +".level", Level.INFO)); setFilter(manager.getFilterProperty(cname +".filter", null)); setFormatter(manager.getFormatterProperty(cname +".formatter", new SimpleFormatter())); try { --- 77,94 ---- public class StreamHandler extends Handler { private OutputStream output; private boolean doneHeader; private volatile Writer writer; ! // Private PrivilegedAction to configure a StreamHandler from LogManager // properties and/or default values as specified in the class // javadoc. ! private class ConfigureAction implements PrivilegedAction<Void> { ! @Override ! public Void run() { LogManager manager = LogManager.getLogManager(); ! String cname = StreamHandler.this.getClass().getName(); setLevel(manager.getLevelProperty(cname +".level", Level.INFO)); setFilter(manager.getFilterProperty(cname +".filter", null)); setFormatter(manager.getFormatterProperty(cname +".formatter", new SimpleFormatter())); try {
*** 95,128 **** } catch (Exception ex2) { // doing a setEncoding with null should always work. // assert false; } } } /** * Create a <tt>StreamHandler</tt>, with no current output stream. */ public StreamHandler() { ! sealed = false; ! configure(); ! sealed = true; } /** * Create a <tt>StreamHandler</tt> with a given <tt>Formatter</tt> * and output stream. * <p> * @param out the target output stream * @param formatter Formatter to be used to format output */ ! public StreamHandler(OutputStream out, Formatter formatter) { ! sealed = false; ! configure(); setFormatter(formatter); setOutputStream(out); ! sealed = true; } /** * Change the output stream. * <P> --- 99,136 ---- } catch (Exception ex2) { // doing a setEncoding with null should always work. // assert false; } } + return null; + } } /** * Create a <tt>StreamHandler</tt>, with no current output stream. */ public StreamHandler() { ! AccessController.doPrivileged(new ConfigureAction(), null, LogManager.controlPermission); } /** * Create a <tt>StreamHandler</tt> with a given <tt>Formatter</tt> * and output stream. * <p> * @param out the target output stream * @param formatter Formatter to be used to format output */ ! public StreamHandler(final OutputStream out, final Formatter formatter) { ! AccessController.doPrivileged(new ConfigureAction() { ! @Override ! public Void run() { ! super.run(); setFormatter(formatter); setOutputStream(out); ! return null; ! } ! }, null, LogManager.controlPermission); } /** * Change the output stream. * <P>