private void recursiveGetKeys()

in src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java [339:377]


    private void recursiveGetKeys(final Set<String> keys, final Context context, final String prefix, final Set<Context> processedCtx) throws NamingException {
        processedCtx.add(context);
        NamingEnumeration<NameClassPair> elements = null;

        try {
            elements = context.list("");

            // iterates through the context's elements
            while (elements.hasMore()) {
                final NameClassPair nameClassPair = elements.next();
                final String name = nameClassPair.getName();
                final Object object = context.lookup(name);

                // build the key
                final StringBuilder keyBuilder = new StringBuilder();
                keyBuilder.append(prefix);
                if (keyBuilder.length() > 0) {
                    keyBuilder.append(DELIMITER);
                }
                keyBuilder.append(name);

                if (object instanceof Context) {
                    // add the keys of the sub context
                    final Context subcontext = (Context) object;
                    if (!processedCtx.contains(subcontext)) {
                        recursiveGetKeys(keys, subcontext, keyBuilder.toString(), processedCtx);
                    }
                } else {
                    // add the key
                    keys.add(keyBuilder.toString());
                }
            }
        } finally {
            // close the enumeration
            if (elements != null) {
                elements.close();
            }
        }
    }