/**
   * Initialize internal policy state, from file if policyFile != null This method is intended to be
   * called at the beginning of a subclass initialize() method to handle the generic policy setup,
   * after which the subclass initialize() should adjust policy (including calling readPolicy) as
   * appropriate. If both "policy file" and "initial namespace" are non-null the policy file takes
   * precedence
   *
   * @param policyFile policy file
   * @param initial namespace
   * @throws RepositoryException
   * @throws FileNotFoundException
   * @throws ContentDecodingException
   * @throws MalformedContentNameStringException
   */
  public PolicyXML startInitPolicy(File policyFile, String nameSpace) throws RepositoryException {
    BasicPolicy policy = new BasicPolicy(null);
    policy.setVersion(getVersion());

    if (null != policyFile) {
      try {
        FileInputStream fis = new FileInputStream(policyFile);
        try {
          policy.updateFromInputStream(fis);
        } finally {
          try {
            fis.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      } catch (FileNotFoundException e) {
        throw new RepositoryException(e.getMessage());
      }
    } else if (null != nameSpace) { // Try setting an initial namespace from the namespace parameter
      ArrayList<ContentName> nameSpaceAL = new ArrayList<ContentName>(1);
      try {
        nameSpaceAL.add(ContentName.fromNative(nameSpace));
      } catch (MalformedContentNameStringException e) {
        Log.warning(Log.FAC_REPO, "Invalid namespace specified: {0}", nameSpace);
      }
      policy.setNamespace(nameSpaceAL);
    }
    return policy.getPolicyXML();
  }