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();
}
}
}