Example usage for org.apache.shiro.config Ini getSectionNames

List of usage examples for org.apache.shiro.config Ini getSectionNames

Introduction

In this page you can find the example usage for org.apache.shiro.config Ini getSectionNames.

Prototype

public Set<String> getSectionNames() 

Source Link

Document

Returns the names of all sections managed by this Ini instance or an empty collection if there are no sections.

Usage

From source file:org.apache.access.provider.file.SimplePolicyEngine.java

License:Apache License

/**
 * Parse the resource. Should not be used in the normal course
 *///w ww  .j av a 2s  .c  o  m
protected void parse() {
    LOGGER.info("Parsing " + resourcePath);
    Roles roles = new Roles();
    try {
        perDbResources.clear();
        Ini ini = PolicyFiles.loadFromPath(fileSystem, resourcePath);
        if (LOGGER.isDebugEnabled()) {
            for (String sectionName : ini.getSectionNames()) {
                LOGGER.debug("Section: " + sectionName);
                Ini.Section section = ini.get(sectionName);
                for (String key : section.keySet()) {
                    String value = section.get(key);
                    LOGGER.debug(key + " = " + value);
                }
            }
        }
        ImmutableSetMultimap<String, String> globalRoles;
        Map<String, ImmutableSetMultimap<String, String>> perDatabaseRoles = Maps.newHashMap();
        globalRoles = parseIni(null, ini);
        Ini.Section filesSection = ini.getSection(DATABASES);
        if (filesSection == null) {
            LOGGER.info("Section " + DATABASES + " needs no further processing");
        } else {
            for (Map.Entry<String, String> entry : filesSection.entrySet()) {
                String database = Strings.nullToEmpty(entry.getKey()).trim().toLowerCase();
                Path perDbPolicy = new Path(Strings.nullToEmpty(entry.getValue()).trim());
                if (isRelative(perDbPolicy)) {
                    perDbPolicy = new Path(resourcePath.getParent(), perDbPolicy);
                }
                try {
                    LOGGER.info("Parsing " + perDbPolicy);
                    perDatabaseRoles.put(database,
                            parseIni(database, PolicyFiles.loadFromPath(fileSystem, perDbPolicy)));
                    perDbResources.add(perDbPolicy);
                } catch (Exception e) {
                    LOGGER.error("Error processing key " + entry.getKey() + ", skipping " + entry.getValue(),
                            e);
                    throw e;
                }
            }
        }
        roles = new Roles(globalRoles, ImmutableMap.copyOf(perDatabaseRoles));
    } catch (Exception e) {
        LOGGER.error("Error processing file, ignoring " + resourcePath, e);
    }
    rolesReference.set(roles);
}

From source file:org.apache.aurora.scheduler.http.api.security.ShiroIniConverter.java

License:Apache License

@Override
public Ini convert(String raw) {
    Ini ini;
    try {/*ww  w . j  a v  a 2s .  c  o  m*/
        ini = Ini.fromResourcePath(raw);
    } catch (ConfigurationException e) {
        throw new ParameterException(getErrorString(raw, e.getMessage()), e);
    }

    Set<String> presentSections = ImmutableSortedSet.copyOf(ini.getSectionNames());
    if (presentSections.isEmpty()) {
        throw new MissingSectionsException();
    }

    Set<String> extraSections = Sets.difference(presentSections, ALLOWED_SECTION_NAMES);
    if (!extraSections.isEmpty()) {
        throw new ExtraSectionsException(extraSections);
    }

    return ini;
}

From source file:org.apache.aurora.scheduler.http.api.security.ShiroIniParser.java

License:Apache License

@Override
public Ini doParse(String raw) throws IllegalArgumentException {
    Ini ini;
    try {/* w w w.ja  v  a  2s .  co  m*/
        ini = Ini.fromResourcePath(raw);
    } catch (ConfigurationException e) {
        throw new ShiroConfigurationException(e);
    }

    Set<String> presentSections = ImmutableSortedSet.copyOf(ini.getSectionNames());
    if (presentSections.isEmpty()) {
        throw new MissingSectionsException();
    }

    Set<String> extraSections = Sets.difference(presentSections, ALLOWED_SECTION_NAMES);
    if (!extraSections.isEmpty()) {
        throw new ExtraSectionsException(extraSections);
    }

    return ini;
}

From source file:org.apache.sentry.provider.file.SimpleFileProviderBackend.java

License:Apache License

private void parse() {
    configErrors.clear();//from  w  w w  .j  a  v a 2 s .com
    configWarnings.clear();
    Table<String, String, Set<String>> groupRolePrivilegeTableTemp = HashBasedTable.create();
    Ini ini;
    LOGGER.info("Parsing " + resourcePath);
    try {
        try {
            ini = PolicyFiles.loadFromPath(fileSystem, resourcePath);
        } catch (IOException e) {
            configErrors.add("Failed to read policy file " + resourcePath + " Error: " + e.getMessage());
            throw new SentryConfigurationException("Error loading policy file " + resourcePath, e);
        } catch (IllegalArgumentException e) {
            configErrors.add("Failed to read policy file " + resourcePath + " Error: " + e.getMessage());
            throw new SentryConfigurationException("Error loading policy file " + resourcePath, e);
        }

        if (LOGGER.isDebugEnabled()) {
            for (String sectionName : ini.getSectionNames()) {
                LOGGER.debug("Section: " + sectionName);
                Ini.Section section = ini.get(sectionName);
                for (String key : section.keySet()) {
                    String value = section.get(key);
                    LOGGER.debug(key + " = " + value);
                }
            }
        }
        parseIni(null, ini, validators, resourcePath, groupRolePrivilegeTableTemp);
        mergeResult(groupRolePrivilegeTableTemp);
        groupRolePrivilegeTableTemp.clear();
        Ini.Section filesSection = ini.getSection(DATABASES);
        if (filesSection == null) {
            LOGGER.info("Section " + DATABASES + " needs no further processing");
        } else if (!allowPerDatabaseSection) {
            String msg = "Per-db policy file is not expected in this configuration.";
            throw new SentryConfigurationException(msg);
        } else {
            for (Map.Entry<String, String> entry : filesSection.entrySet()) {
                String database = Strings.nullToEmpty(entry.getKey()).trim().toLowerCase();
                Path perDbPolicy = new Path(Strings.nullToEmpty(entry.getValue()).trim());
                if (isRelative(perDbPolicy)) {
                    perDbPolicy = new Path(resourcePath.getParent(), perDbPolicy);
                }
                try {
                    LOGGER.info("Parsing " + perDbPolicy);
                    Ini perDbIni = PolicyFiles.loadFromPath(perDbPolicy.getFileSystem(conf), perDbPolicy);
                    if (perDbIni.containsKey(USERS)) {
                        configErrors.add(
                                "Per-db policy file cannot contain " + USERS + " section in " + perDbPolicy);
                        throw new SentryConfigurationException(
                                "Per-db policy files cannot contain " + USERS + " section");
                    }
                    if (perDbIni.containsKey(DATABASES)) {
                        configErrors.add("Per-db policy files cannot contain " + DATABASES + " section in "
                                + perDbPolicy);
                        throw new SentryConfigurationException(
                                "Per-db policy files cannot contain " + DATABASES + " section");
                    }
                    parseIni(database, perDbIni, validators, perDbPolicy, groupRolePrivilegeTableTemp);
                } catch (Exception e) {
                    configErrors.add(
                            "Failed to read per-DB policy file " + perDbPolicy + " Error: " + e.getMessage());
                    LOGGER.error("Error processing key " + entry.getKey() + ", skipping " + entry.getValue(),
                            e);
                }
            }
        }
        mergeResult(groupRolePrivilegeTableTemp);
        groupRolePrivilegeTableTemp.clear();
    } catch (Exception e) {
        configErrors.add("Error processing file " + resourcePath + e.getMessage());
        LOGGER.error("Error processing file, ignoring " + resourcePath, e);
    }
}

From source file:org.apache.sentry.provider.file.SimplePolicyEngine.java

License:Apache License

/**
 * Parse the resource. Should not be used in the normal course
 *///  www  . j a  v a  2s.  co m
protected void parse() {
    LOGGER.info("Parsing " + resourcePath);
    Roles roles = new Roles();
    try {
        perDbResources.clear();
        Ini ini = PolicyFiles.loadFromPath(fileSystem, resourcePath);
        if (LOGGER.isDebugEnabled()) {
            for (String sectionName : ini.getSectionNames()) {
                LOGGER.debug("Section: " + sectionName);
                Ini.Section section = ini.get(sectionName);
                for (String key : section.keySet()) {
                    String value = section.get(key);
                    LOGGER.debug(key + " = " + value);
                }
            }
        }
        ImmutableSetMultimap<String, String> globalRoles;
        Map<String, ImmutableSetMultimap<String, String>> perDatabaseRoles = Maps.newHashMap();
        globalRoles = parseIni(null, ini);
        Ini.Section filesSection = ini.getSection(DATABASES);
        if (filesSection == null) {
            LOGGER.info("Section " + DATABASES + " needs no further processing");
        } else {
            for (Map.Entry<String, String> entry : filesSection.entrySet()) {
                String database = Strings.nullToEmpty(entry.getKey()).trim().toLowerCase();
                Path perDbPolicy = new Path(Strings.nullToEmpty(entry.getValue()).trim());
                if (isRelative(perDbPolicy)) {
                    perDbPolicy = new Path(resourcePath.getParent(), perDbPolicy);
                }
                try {
                    LOGGER.info("Parsing " + perDbPolicy);
                    Ini perDbIni = PolicyFiles.loadFromPath(fileSystem, perDbPolicy);
                    if (perDbIni.containsKey(USERS)) {
                        throw new ConfigurationException(
                                "Per-db policy files cannot contain " + USERS + " section");
                    }
                    if (perDbIni.containsKey(DATABASES)) {
                        throw new ConfigurationException(
                                "Per-db policy files cannot contain " + DATABASES + " section");
                    }
                    ImmutableSetMultimap<String, String> currentDbRoles = parseIni(database, perDbIni);
                    perDatabaseRoles.put(database, currentDbRoles);
                    perDbResources.add(perDbPolicy);
                } catch (Exception e) {
                    LOGGER.error("Error processing key " + entry.getKey() + ", skipping " + entry.getValue(),
                            e);
                }
            }
        }
        roles = new Roles(globalRoles, ImmutableMap.copyOf(perDatabaseRoles));
    } catch (Exception e) {
        LOGGER.error("Error processing file, ignoring " + resourcePath, e);
    }
    rolesReference.set(roles);
}