/*
 * JBoss, Home of Professional Open Source
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package org.jboss.security;

import java.security.AccessController;
import java.security.PrivilegedAction;

/**
 * Priviledged actions for this package
 * 
 * @author Scott.Stark@jboss.org
 * @version $Revision: 1.2 $
 */
class SecurityActions
{
   interface SystemPropertyAction
   {
      SystemPropertyAction PRIVILEGED = new SystemPropertyAction()
      {
         public String getProperty(final String name, final String defaultValue)
         {
            String prop = (String) AccessController.doPrivileged(
               new PrivilegedAction()
               {
                  public Object run()
                  {
                     String p = System.getProperty(name, defaultValue);
                     return p;
                  }
               }
            );
            return prop;
         }
      };

      SystemPropertyAction NON_PRIVILEGED = new SystemPropertyAction()
      {
         public String getProperty(final String name, final String defaultValue)
         {
            String prop = System.getProperty(name, defaultValue);
            return prop;
         }
      };

      String getProperty(final String name, final String defaultValue);
   }

   static String getProperty(final String name, final String defaultValue)
   {
      SecurityManager sm = System.getSecurityManager();
      String prop;
      if( sm != null )
      {
         prop = SystemPropertyAction.PRIVILEGED.getProperty(name, defaultValue);
      }
      else
      {
         prop = SystemPropertyAction.NON_PRIVILEGED.getProperty(name, defaultValue);
      }
      return prop;
   }
}
