コード例 #1
0
ファイル: PolicyFile.java プロジェクト: Blueash/gcc
  public void refresh() {
    cs2pc.clear();
    final List policyFiles = new LinkedList();
    try {
      policyFiles.add(new File(DEFAULT_POLICY).toURL());
      policyFiles.add(new File(DEFAULT_USER_POLICY).toURL());

      AccessController.doPrivileged(
          new PrivilegedExceptionAction() {
            public Object run() throws Exception {
              String allow = Security.getProperty("policy.allowSystemProperty");
              if (allow == null || Boolean.getBoolean(allow)) {
                String s = System.getProperty("java.security.policy");
                logger.log(Component.POLICY, "java.security.policy={0}", s);
                if (s != null) {
                  boolean only = s.startsWith("=");
                  if (only) s = s.substring(1);
                  policyFiles.clear();
                  policyFiles.add(new URL(s));
                  if (only) return null;
                }
              }
              for (int i = 1; ; i++) {
                String pname = "policy.url." + i;
                String s = Security.getProperty(pname);
                logger.log(Component.POLICY, "{0}={1}", new Object[] {pname, s});
                if (s == null) break;
                policyFiles.add(new URL(s));
              }
              return null;
            }
          });
    } catch (PrivilegedActionException pae) {
      logger.log(Component.POLICY, "reading policy properties", pae);
    } catch (MalformedURLException mue) {
      logger.log(Component.POLICY, "setting default policies", mue);
    }

    logger.log(Component.POLICY, "building policy from URLs {0}", policyFiles);
    for (Iterator it = policyFiles.iterator(); it.hasNext(); ) {
      try {
        URL url = (URL) it.next();
        parse(url);
      } catch (IOException ioe) {
        logger.log(Component.POLICY, "reading policy", ioe);
      }
    }
  }