All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.html.SecuritySupport12 Maven / Gradle / Ivy

There is a newer version: 0.63
Show newest version
/*
 * Copyright 2002-2008 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.googlecode.html;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;

/**
 * This class is duplicated for each JAXP subpackage so keep it in sync. It is package private and
 * therefore is not exposed as part of the JAXP API.
 * 
 * Security related methods that only work on J2SE 1.2 and newer.
 */
class SecuritySupport12 extends SecuritySupport {

   ClassLoader getContextClassLoader() {
      return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            ClassLoader cl = null;
            try {
               cl = Thread.currentThread().getContextClassLoader();
            } catch (SecurityException ex) {
            }
            return cl;
         }
      });
   }

   boolean getFileExists(final File f) {
      return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            return new Boolean(f.exists());
         }
      })).booleanValue();
   }

   FileInputStream getFileInputStream(final File file) throws FileNotFoundException {
      try {
         return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
            public Object run() throws FileNotFoundException {
               return new FileInputStream(file);
            }
         });
      } catch (PrivilegedActionException e) {
         throw (FileNotFoundException) e.getException();
      }
   }

   long getLastModified(final File f) {
      return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            return new Long(f.lastModified());
         }
      })).longValue();
   }

   ClassLoader getParentClassLoader(final ClassLoader cl) {
      return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            ClassLoader parent = null;
            try {
               parent = cl.getParent();
            } catch (SecurityException ex) {
            }

            // eliminate loops in case of the boot
            // ClassLoader returning itself as a parent
            return (parent == cl) ? null : parent;
         }
      });
   }

   InputStream getResourceAsStream(final ClassLoader cl, final String name) {
      return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            InputStream ris;
            if (cl == null) {
               ris = ClassLoader.getSystemResourceAsStream(name);
            } else {
               ris = cl.getResourceAsStream(name);
            }
            return ris;
         }
      });
   }

   ClassLoader getSystemClassLoader() {
      return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            ClassLoader cl = null;
            try {
               cl = ClassLoader.getSystemClassLoader();
            } catch (SecurityException ex) {
            }
            return cl;
         }
      });
   }

   String getSystemProperty(final String propName) {
      return (String) AccessController.doPrivileged(new PrivilegedAction() {
         public Object run() {
            return System.getProperty(propName);
         }
      });
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy