Example usage for org.springframework.jndi JndiCallback JndiCallback

List of usage examples for org.springframework.jndi JndiCallback JndiCallback

Introduction

In this page you can find the example usage for org.springframework.jndi JndiCallback JndiCallback.

Prototype

JndiCallback

Source Link

Usage

From source file:jndi.view.JndiView.java

/**
 * @param path//from   ww w .  j a va 2s.com
 *        the path to browse
 * @return {@link List} of {@link JndiEntry}s
 * @throws NamingException
 *         on exception
 */
private List<JndiEntry> browse(final String path) throws NamingException {
    final JndiCallback<List<JndiEntry>> contextCallback = new JndiCallback<List<JndiEntry>>() {
        @Override
        public List<JndiEntry> doInContext(final Context context) throws NamingException {
            if (JAVA_GLOBAL.equals(path)) {
                // Do a little trick to handle "java:global"
                final NamingEnumeration<Binding> root = context.listBindings("");
                Context javaGlobalContext = null;
                while (root.hasMore()) {
                    final Binding binding = root.next();
                    if (JAVA_GLOBAL.equals(binding.getName())) {
                        final Object obj = binding.getObject();
                        if (obj instanceof Context) {
                            javaGlobalContext = (Context) obj;
                        }
                        break;
                    }
                }
                if (javaGlobalContext != null) {
                    return examineBindings(javaGlobalContext, path, javaGlobalContext.listBindings(""));
                }
                logger.warning("Unable to browse \"" + JAVA_GLOBAL + "\" namespace!");
                return emptyList();
            }
            return examineBindings(context, path, context.listBindings(path));
        }
    };
    return jndiTemplate.execute(contextCallback);
}