code: public Map<X500Principal, SigningPolicy> parse(String fileName)
              throws FileNotFoundException, SigningPolicyException {
  
          if ((fileName == null) || (fileName.trim().isEmpty())) {
              throw new IllegalArgumentException();
          }
  
          logger.debug("Signing policy file name " + fileName);
  
          FileReader fileReader = null;
  
          try {
              fileReader = new FileReader(fileName);
              return parse(fileReader);
          } catch (Exception e) {
              throw new SigningPolicyException(e);
          } finally {
              if (fileReader != null) {
                  try {
                      fileReader.close();
                  } catch (Exception exp) {
                      logger.debug("Error closing file reader", exp);
                  }
              }
          }
  
  
      }
docs: Parses the file to extract signing policy defined for CA with the
  specified DN. If the policy file does not exist, a SigningPolicy object
  with only CA DN is created. If policy path exists, but no relevant policy
  exisit, SigningPolicy object with CA DN and file path is created.
  
  @param fileName Name of the signing policy file
  @return SigningPolicy object that contains the information. If no policy
  is found, SigningPolicy object with only the CA DN is returned.
  @throws org.globus.gsi.SigningPolicyException
  Any errors with parsing the signing policy file.
  @throws FileNotFoundException If the signing policy file does not exist.