/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.velocity; import java.util.Arrays; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.exception.VelocityException; import org.ldaptive.Connection; import org.ldaptive.LdapException; import org.ldaptive.pool.PooledConnectionFactory; import org.ldaptive.pool.PooledConnectionFactoryManager; /** * {@link Template} based pooled search dn resolver. * * @author Middleware Services */ public class PooledTemplateSearchDnResolver extends AbstractTemplateSearchDnResolver implements PooledConnectionFactoryManager { /** Connection factory. */ private PooledConnectionFactory factory; /** * Creates a new pooled template search DN resolver. * * @param engine velocity engine * @param filter filter template * * @throws VelocityException if velocity is not configured properly or the filter template is invalid */ public PooledTemplateSearchDnResolver(final VelocityEngine engine, final String filter) throws VelocityException { super(engine, filter); } /** * Creates a new pooled template search DN resolver. * * @param cf connection factory * @param engine velocity engine * @param filter filter template * * @throws VelocityException if velocity is not configured properly or the filter template is invalid */ public PooledTemplateSearchDnResolver( final PooledConnectionFactory cf, final VelocityEngine engine, final String filter) throws VelocityException { super(engine, filter); setConnectionFactory(cf); } @Override public PooledConnectionFactory getConnectionFactory() { return factory; } @Override public void setConnectionFactory(final PooledConnectionFactory cf) { factory = cf; } @Override protected Connection getConnection() throws LdapException { return factory.getConnection(); } @Override public String toString() { return String.format( "[%s@%d::factory=%s, templateName=%s, baseDn=%s, userFilter=%s, userFilterParameters=%s, " + "allowMultipleDns=%s, subtreeSearch=%s, derefAliases=%s, referralHandler=%s]", getClass().getName(), hashCode(), factory, getTemplate().getTemplateName(), getBaseDn(), getUserFilter(), Arrays.toString(getUserFilterParameters()), getAllowMultipleDns(), getSubtreeSearch(), getDerefAliases(), getReferralHandler()); } }