/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.pool; import org.ldaptive.BindOperation; import org.ldaptive.BindRequest; import org.ldaptive.Connection; import org.ldaptive.Response; import org.ldaptive.ResultCode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Passivates a connection by performing a bind operation on it. * * @author Middleware Services */ public class BindPassivator implements Passivator<Connection> { /** Logger for this class. */ private final Logger logger = LoggerFactory.getLogger(getClass()); /** Bind request to perform passivation with. */ private BindRequest bindRequest; /** Creates a new bind passivator. */ public BindPassivator() { bindRequest = new BindRequest(); } /** * Creates a new bind passivator. * * @param br to use for binds */ public BindPassivator(final BindRequest br) { bindRequest = br; } /** * Returns the bind request. * * @return bind request */ public BindRequest getBindRequest() { return bindRequest; } /** * Sets the bind request. * * @param br bind request */ public void setBindRequest(final BindRequest br) { bindRequest = br; } @Override public boolean passivate(final Connection c) { boolean success = false; if (c != null) { try { final BindOperation bind = new BindOperation(c); final Response<Void> response = bind.execute(bindRequest); success = ResultCode.SUCCESS == response.getResultCode(); } catch (Exception e) { logger.debug("passivation failed for bind request {}", bindRequest, e); } } return success; } @Override public String toString() { return String.format("[%s@%d::bindRequest=%s]", getClass().getName(), hashCode(), bindRequest); } }