private void loadIncludeFile()

in src/main/java/org/apache/commons/configuration2/PropertiesConfiguration.java [1392:1435]


    private void loadIncludeFile(final String fileName, final boolean optional, final Deque<URL> seenStack) throws ConfigurationException {
        if (locator == null) {
            throw new ConfigurationException(
                "Load operation not properly " + "initialized! Do not call read(InputStream) directly," + " but use a FileHandler to load a configuration.");
        }

        URL url = locateIncludeFile(locator.getBasePath(), fileName);
        if (url == null) {
            final URL baseURL = locator.getSourceURL();
            if (baseURL != null) {
                url = locateIncludeFile(baseURL.toString(), fileName);
            }
        }

        if (optional && url == null) {
            return;
        }

        if (url == null) {
            getIncludeListener().accept(new ConfigurationException("Cannot resolve include file " + fileName, new FileNotFoundException(fileName)));
        } else {
            final FileHandler fh = new FileHandler(this);
            fh.setFileLocator(locator);
            final FileLocator orgLocator = locator;
            try {
                try {
                    // Check for cycles
                    if (seenStack.contains(url)) {
                        throw new ConfigurationException(String.format("Cycle detected loading %s, seen stack: %s", url, seenStack));
                    }
                    seenStack.add(url);
                    try {
                        fh.load(url);
                    } finally {
                        seenStack.pop();
                    }
                } catch (final ConfigurationException e) {
                    getIncludeListener().accept(e);
                }
            } finally {
                locator = orgLocator; // reset locator which is changed by load
            }
        }
    }