/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2010 Sun Microsystems, Inc. * Portions copyright 2011-2013 ForgeRock AS */ package org.forgerock.opendj.ldap; import java.util.Collection; import org.forgerock.opendj.ldap.requests.AbandonRequest; import org.forgerock.opendj.ldap.requests.AddRequest; import org.forgerock.opendj.ldap.requests.BindRequest; import org.forgerock.opendj.ldap.requests.CompareRequest; import org.forgerock.opendj.ldap.requests.DeleteRequest; import org.forgerock.opendj.ldap.requests.ExtendedRequest; import org.forgerock.opendj.ldap.requests.ModifyDNRequest; import org.forgerock.opendj.ldap.requests.ModifyRequest; import org.forgerock.opendj.ldap.requests.SearchRequest; import org.forgerock.opendj.ldap.requests.UnbindRequest; import org.forgerock.opendj.ldap.responses.BindResult; import org.forgerock.opendj.ldap.responses.CompareResult; import org.forgerock.opendj.ldap.responses.ExtendedResult; import org.forgerock.opendj.ldap.responses.GenericExtendedResult; import org.forgerock.opendj.ldap.responses.Result; import org.forgerock.opendj.ldap.responses.SearchResultEntry; import org.forgerock.opendj.ldap.responses.SearchResultReference; import org.forgerock.opendj.ldif.ChangeRecord; import org.forgerock.opendj.ldif.ConnectionEntryReader; import com.forgerock.opendj.util.Validator; /** * An abstract base class from which connection wrappers may be easily * implemented. The default implementation of each method is to delegate to the * wrapped connection. * * @param * The type of wrapped connection. */ public abstract class AbstractConnectionWrapper implements Connection { /** * The wrapped connection. */ protected final C connection; /** * Creates a new connection wrapper. * * @param connection * The connection to be wrapped. */ protected AbstractConnectionWrapper(final C connection) { Validator.ensureNotNull(connection); this.connection = connection; } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult abandonAsync(final AbandonRequest request) { return connection.abandonAsync(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result add(final AddRequest request) throws ErrorResultException { return connection.add(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result add(final Entry entry) throws ErrorResultException { return connection.add(entry); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result add(final String... ldifLines) throws ErrorResultException { return connection.add(ldifLines); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult addAsync(final AddRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.addAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public void addConnectionEventListener(final ConnectionEventListener listener) { connection.addConnectionEventListener(listener); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result applyChange(final ChangeRecord request) throws ErrorResultException { return connection.applyChange(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult applyChangeAsync(final ChangeRecord request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.applyChangeAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public BindResult bind(final BindRequest request) throws ErrorResultException { return connection.bind(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public BindResult bind(final String name, final char[] password) throws ErrorResultException { return connection.bind(name, password); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult bindAsync(final BindRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.bindAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public void close() { connection.close(); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public void close(final UnbindRequest request, final String reason) { connection.close(request, reason); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public CompareResult compare(final CompareRequest request) throws ErrorResultException { return connection.compare(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public CompareResult compare(final String name, final String attributeDescription, final String assertionValue) throws ErrorResultException { return connection.compare(name, attributeDescription, assertionValue); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult compareAsync(final CompareRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.compareAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result delete(final DeleteRequest request) throws ErrorResultException { return connection.delete(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result delete(final String name) throws ErrorResultException { return connection.delete(name); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult deleteAsync(final DeleteRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.deleteAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result deleteSubtree(final String name) throws ErrorResultException { return connection.deleteSubtree(name); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public R extendedRequest(final ExtendedRequest request) throws ErrorResultException { return connection.extendedRequest(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public R extendedRequest(final ExtendedRequest request, final IntermediateResponseHandler handler) throws ErrorResultException { return connection.extendedRequest(request, handler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public GenericExtendedResult extendedRequest(final String requestName, final ByteString requestValue) throws ErrorResultException { return connection.extendedRequest(requestName, requestValue); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult extendedRequestAsync( final ExtendedRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.extendedRequestAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public boolean isClosed() { return connection.isClosed(); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public boolean isValid() { return connection.isValid(); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result modify(final ModifyRequest request) throws ErrorResultException { return connection.modify(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result modify(final String... ldifLines) throws ErrorResultException { return connection.modify(ldifLines); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult modifyAsync(final ModifyRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.modifyAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result modifyDN(final ModifyDNRequest request) throws ErrorResultException { return connection.modifyDN(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result modifyDN(final String name, final String newRDN) throws ErrorResultException { return connection.modifyDN(name, newRDN); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult modifyDNAsync(final ModifyDNRequest request, final IntermediateResponseHandler intermediateResponseHandler, final ResultHandler resultHandler) { return connection.modifyDNAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public SearchResultEntry readEntry(final DN name, final String... attributeDescriptions) throws ErrorResultException { return connection.readEntry(name, attributeDescriptions); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public SearchResultEntry readEntry(final String name, final String... attributeDescriptions) throws ErrorResultException { return connection.readEntry(name, attributeDescriptions); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult readEntryAsync(final DN name, final Collection attributeDescriptions, final ResultHandler handler) { return connection.readEntryAsync(name, attributeDescriptions, handler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public void removeConnectionEventListener(final ConnectionEventListener listener) { connection.removeConnectionEventListener(listener); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public ConnectionEntryReader search(final SearchRequest request) { return connection.search(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result search(final SearchRequest request, final Collection entries) throws ErrorResultException { return connection.search(request, entries); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result search(final SearchRequest request, final Collection entries, final Collection references) throws ErrorResultException { return connection.search(request, entries, references); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public Result search(final SearchRequest request, final SearchResultHandler handler) throws ErrorResultException { return connection.search(request, handler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public ConnectionEntryReader search(final String baseObject, final SearchScope scope, final String filter, final String... attributeDescriptions) { return connection.search(baseObject, scope, filter, attributeDescriptions); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult searchAsync(final SearchRequest request, final IntermediateResponseHandler intermediateResponseHandler, final SearchResultHandler resultHandler) { return connection.searchAsync(request, intermediateResponseHandler, resultHandler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public SearchResultEntry searchSingleEntry(final SearchRequest request) throws ErrorResultException { return connection.searchSingleEntry(request); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public SearchResultEntry searchSingleEntry(final String baseObject, final SearchScope scope, final String filter, final String... attributeDescriptions) throws ErrorResultException { return connection.searchSingleEntry(baseObject, scope, filter, attributeDescriptions); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public FutureResult searchSingleEntryAsync(final SearchRequest request, final ResultHandler handler) { return connection.searchSingleEntryAsync(request, handler); } /** * {@inheritDoc} *

* The default implementation is to delegate. */ @Override public String toString() { return connection.toString(); } }