public void init(File jsonFile) throws StorageException {
   try {
     JsonConfig config = new JsonConfig(jsonFile);
     homeDir = new File(config.get("storage/file-system/home", DEFAULT_HOME_DIR));
     if (!homeDir.exists()) {
       homeDir.mkdirs();
     }
   } catch (IOException ioe) {
     throw new StorageException(ioe);
   }
 }
  /** Basic constructor, should be run automatically by Tapestry. */
  public PortalSecurityManagerImpl() throws IOException {
    // Get system configuration
    JsonConfigHelper config = new JsonConfigHelper(JsonConfig.getSystemFile());

    // For all SSO providers configured
    sso = new LinkedHashMap();
    List<Object> ssoProviders = config.getList("sso/plugins");
    for (Object ssoId : ssoProviders) {
      // Instantiate from the ServiceLoader
      SSOInterface valid = getSSOProvider((String) ssoId);
      if (valid == null) {
        log.error("Invalid SSO Implementation requested: '{}'", (String) ssoId);
      } else {
        // Store valid implementations
        sso.put((String) ssoId, valid);
        log.info("SSO Provider instantiated: '{}'", ssoId);
      }
    }

    defaultPortal = config.get("portal/defaultView", PortalManager.DEFAULT_PORTAL_NAME);
    serverUrlBase = config.get("urlBase");
    ssoLoginUrl = serverUrlBase + defaultPortal + SSO_LOGIN_PAGE;

    // Get exclusions Strings from config
    excStarts = castList(config.getList("sso/urlExclusions/startsWith"));
    excEnds = castList(config.getList("sso/urlExclusions/endsWith"));
    excEquals = castList(config.getList("sso/urlExclusions/equals"));

    // Trust tokens
    Map<String, JsonConfigHelper> tokenMap = config.getJsonMap("sso/trustTokens");
    tokens = new HashMap();
    tokenExpiry = new HashMap();
    for (String key : tokenMap.keySet()) {
      String publicKey = tokenMap.get(key).get("publicKey");
      String privateKey = tokenMap.get(key).get("privateKey");
      String expiry = tokenMap.get(key).get("expiry", TRUST_TOKEN_EXPIRY);
      if (publicKey != null && privateKey != null) {
        // Valid key
        tokens.put(publicKey, privateKey);
        tokenExpiry.put(publicKey, Long.valueOf(expiry));
      } else {
        log.error("Invalid token data: '{}'", key);
      }
    }
  }