001    /** 
002     * 
003     * Copyright 2004 Protique Ltd
004     * 
005     * Licensed under the Apache License, Version 2.0 (the "License"); 
006     * you may not use this file except in compliance with the License. 
007     * You may obtain a copy of the License at 
008     * 
009     * http://www.apache.org/licenses/LICENSE-2.0
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS, 
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
014     * See the License for the specific language governing permissions and 
015     * limitations under the License. 
016     * 
017     **/
018    package org.activemq.util;
019    
020    import java.util.Properties;
021    import org.apache.commons.logging.Log;
022    import org.apache.commons.logging.LogFactory;
023    
024    /**
025     * Helper class for accessing System properties
026     *
027     * @version $Revision: 1.1.1.1 $
028     */
029    public class SystemProperties {
030        private static final Log log = LogFactory.getLog(SystemProperties.class);
031        private static final boolean canAccessSystemProperties;
032        private static final Properties defaultProperties = new Properties();
033        
034        
035        static {
036            SecurityManager securityManager = System.getSecurityManager();
037            boolean haveAccess = false;
038            if ( securityManager != null ){
039                try{
040                    securityManager.checkPropertiesAccess();
041                    haveAccess = true;
042                }catch(Throwable e){
043                    haveAccess = false;
044                    log.warn("Do not have access to System properties",e);
045                }
046            }
047            canAccessSystemProperties = haveAccess;
048        }
049            
050       /**
051        * @return System properties
052        */
053       public static Properties getSystemProperties(){
054           return canAccessSystemProperties ? System.getProperties() : defaultProperties;
055       }
056       
057       /**
058        * @return the default user name
059        */
060       public static String getUserName(){
061           return canAccessSystemProperties ? System.getProperty("user.name") : "defaultUser";
062       }
063    }