158 lines · 5.4 KB · Java
RawDownload
/* * Copyright (c) 2004, 2008, 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 sun.net; import java.io.*;import java.security.AccessController;import java.security.PrivilegedAction;import java.util.Properties; /* * This class allows for centralized access to Networking properties. * Default values are loaded from the file jre/lib/net.properties * * * @author Jean-Christophe Collet * */ public class NetProperties {    static private Properties props = new Properties();    static {        AccessController.doPrivileged(            new PrivilegedAction<Void>() {                public Void run() {                    loadDefaultProperties();                    return null;                }});    }     private NetProperties() { };      /*     * Loads the default networking system properties     * the file is in jre/lib/net.properties     */    static private void loadDefaultProperties() {        String fname = System.getProperty("java.home");        if (fname == null) {            throw new Error("Can't find java.home ??");        }        try {            File f = new File(fname, "lib");            f = new File(f, "net.properties");            fname = f.getCanonicalPath();            InputStream in = new FileInputStream(fname);            BufferedInputStream bin = new BufferedInputStream(in);            props.load(bin);            bin.close();        } catch (Exception e) {            // Do nothing. We couldn't find or access the file            // so we won't have default properties...        }    }     /**     * Get a networking system property. If no system property was defined     * returns the default value, if it exists, otherwise returns     * <code>null</code>.     * @param      key  the property name.     * @throws  SecurityException  if a security manager exists and its     *          <code>checkPropertiesAccess</code> method doesn't allow access     *          to the system properties.     * @return the <code>String</code> value for the property,     *         or <code>null</code>     */    static public String get(String key) {        String def = props.getProperty(key);        try {            return System.getProperty(key, def);        } catch (IllegalArgumentException e) {        } catch (NullPointerException e) {        }        return null;    }     /**     * Get an Integer networking system property. If no system property was     * defined returns the default value, if it exists, otherwise returns     * <code>null</code>.     * @param   key     the property name.     * @param   defval  the default value to use if the property is not found     * @throws  SecurityException  if a security manager exists and its     *          <code>checkPropertiesAccess</code> method doesn't allow access     *          to the system properties.     * @return the <code>Integer</code> value for the property,     *         or <code>null</code>     */    static public Integer getInteger(String key, int defval) {        String val = null;         try {            val = System.getProperty(key, props.getProperty(key));        } catch (IllegalArgumentException e) {        } catch (NullPointerException e) {        }         if (val != null) {            try {                return Integer.decode(val);            } catch (NumberFormatException ex) {            }        }        return new Integer(defval);    }     /**     * Get a Boolean networking system property. If no system property was     * defined returns the default value, if it exists, otherwise returns     * <code>null</code>.     * @param   key     the property name.     * @throws  SecurityException  if a security manager exists and its     *          <code>checkPropertiesAccess</code> method doesn't allow access     *          to the system properties.     * @return the <code>Boolean</code> value for the property,     *         or <code>null</code>     */    static public Boolean getBoolean(String key) {        String val = null;         try {            val = System.getProperty(key, props.getProperty(key));        } catch (IllegalArgumentException e) {        } catch (NullPointerException e) {        }         if (val != null) {            try {                return Boolean.valueOf(val);            } catch (NumberFormatException ex) {            }        }        return null;    } }