/*
* 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
* trunk/opends/resource/legal-notices/OpenDS.LICENSE
* or https://OpenDS.dev.java.net/OpenDS.LICENSE.
* 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
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 2006-2008 Sun Microsystems, Inc.
* Portions Copyright 2011-2013 ForgeRock AS
*/
package org.opends.server.core;
import java.util.List;
import java.util.Map;
import org.opends.messages.Message;
import org.opends.messages.MessageBuilder;
import org.opends.server.api.ClientConnection;
import org.opends.server.controls.ControlDecoder;
import org.opends.server.types.*;
/**
* This abstract class is a generic operation wrapper intended to be subclassed
* by a specific operation wrapper.
*
* @param <W>
* the type of the object wrapped by this class
*/
public class OperationWrapper<W extends Operation> implements Operation
{
/** The wrapped operation. */
private W operation;
/**
* Creates a new generic operation wrapper.
*
* @param operation the generic operation to wrap
*/
public OperationWrapper(W operation)
{
this.operation = operation;
}
/**
* {@inheritDoc}
*/
@Override
public void addRequestControl(Control control)
{
operation.addRequestControl(control);
}
/**
* {@inheritDoc}
*/
@Override
public void addResponseControl(Control control)
{
operation.addResponseControl(control);
}
/**
* {@inheritDoc}
*/
@Override
public void appendErrorMessage(Message message)
{
operation.appendErrorMessage(message);
}
/**
* {@inheritDoc}
*/
@Override
public CancelResult cancel(CancelRequest cancelRequest)
{
return operation.cancel(cancelRequest);
}
/**
* {@inheritDoc}
*/
@Override
public void abort(CancelRequest cancelRequest)
{
operation.abort(cancelRequest);
}
/**
* {@inheritDoc}
*/
@Override
public void disconnectClient(
DisconnectReason disconnectReason,
boolean sendNotification,
Message message
)
{
operation.disconnectClient(
disconnectReason, sendNotification, message);
}
/**
* {@inheritDoc}
*/
@Override
public boolean dontSynchronize()
{
return operation.dontSynchronize();
}
/**
* {@inheritDoc}
*/
@Override
public Object getAttachment(String name)
{
return operation.getAttachment(name);
}
/**
* {@inheritDoc}
*/
@Override
public Map<String, Object> getAttachments()
{
return operation.getAttachments();
}
/**
* {@inheritDoc}
*/
@Override
public DN getAuthorizationDN()
{
return operation.getAuthorizationDN();
}
/**
* {@inheritDoc}
*/
@Override
public Entry getAuthorizationEntry()
{
return operation.getAuthorizationEntry();
}
/**
* {@inheritDoc}
*/
@Override
public CancelRequest getCancelRequest()
{
return operation.getCancelRequest();
}
/**
* {@inheritDoc}
*/
@Override
public CancelResult getCancelResult()
{
return operation.getCancelResult();
}
/**
* {@inheritDoc}
*/
@Override
public ClientConnection getClientConnection()
{
return operation.getClientConnection();
}
/**
* {@inheritDoc}
*/
@Override
public String[][] getCommonLogElements()
{
return operation.getCommonLogElements();
}
/**
* {@inheritDoc}
*/
@Override
public long getConnectionID()
{
return operation.getConnectionID();
}
/**
* {@inheritDoc}
*/
@Override
public MessageBuilder getErrorMessage()
{
return operation.getErrorMessage();
}
/**
* {@inheritDoc}
*/
@Override
public DN getMatchedDN()
{
return operation.getMatchedDN();
}
/**
* {@inheritDoc}
*/
@Override
public int getMessageID()
{
return operation.getMessageID();
}
/**
* Returns the wrapped {@link Operation}.
*
* @return the wrapped {@link Operation}.
*/
protected W getOperation()
{
return operation;
}
/**
* {@inheritDoc}
*/
@Override
public long getOperationID()
{
return operation.getOperationID();
}
/**
* {@inheritDoc}
*/
@Override
public OperationType getOperationType()
{
return operation.getOperationType();
}
/**
* {@inheritDoc}
*/
@Override
public long getProcessingStartTime()
{
return operation.getProcessingStartTime();
}
/**
* {@inheritDoc}
*/
@Override
public long getProcessingStopTime()
{
return operation.getProcessingStopTime();
}
/**
* {@inheritDoc}
*/
@Override
public long getProcessingTime()
{
return operation.getProcessingTime();
}
/**
* {@inheritDoc}
*/
@Override
public long getProcessingNanoTime()
{
return operation.getProcessingNanoTime();
}
/**
* {@inheritDoc}
*/
@Override
public List<String> getReferralURLs()
{
return operation.getReferralURLs();
}
/**
* {@inheritDoc}
*/
@Override
public List<Control> getRequestControls()
{
return operation.getRequestControls();
}
/**
* {@inheritDoc}
*/
@Override
public <T extends Control> T getRequestControl(
ControlDecoder<T> d)throws DirectoryException
{
return operation.getRequestControl(d);
}
/**
* {@inheritDoc}
*/
@Override
public String[][] getRequestLogElements()
{
return operation.getRequestLogElements();
}
/**
* {@inheritDoc}
*/
@Override
public List<Control> getResponseControls()
{
return operation.getResponseControls();
}
/**
* {@inheritDoc}
*/
@Override
public String[][] getResponseLogElements()
{
return operation.getResponseLogElements();
}
/**
* {@inheritDoc}
*/
@Override
public ResultCode getResultCode()
{
return operation.getResultCode();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isInnerOperation()
{
return operation.isInnerOperation();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isInternalOperation()
{
return operation.isInternalOperation();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isSynchronizationOperation()
{
return operation.isSynchronizationOperation();
}
/**
* {@inheritDoc}
*/
@Override
public void operationCompleted()
{
operation.operationCompleted();
}
/**
* {@inheritDoc}
*/
@Override
public Object removeAttachment(String name)
{
return operation.removeAttachment(name);
}
/**
* {@inheritDoc}
*/
@Override
public void removeRequestControl(Control control)
{
operation.removeRequestControl(control);
}
/**
* {@inheritDoc}
*/
@Override
public void removeResponseControl(Control control)
{
operation.removeResponseControl(control);
}
/**
* {@inheritDoc}
*/
@Override
public Object setAttachment(String name, Object value)
{
return operation.setAttachment(name, value);
}
/**
* {@inheritDoc}
*/
@Override
public void setAttachments(Map<String, Object> attachments)
{
operation.setAttachments(attachments);
}
/**
* {@inheritDoc}
*/
@Override
public void setAuthorizationEntry(Entry authorizationEntry)
{
operation.setAuthorizationEntry(authorizationEntry);
}
/**
* {@inheritDoc}
*/
@Override
public void setDontSynchronize(boolean dontSynchronize)
{
operation.setDontSynchronize(dontSynchronize);
}
/**
* {@inheritDoc}
*/
@Override
public void setErrorMessage(MessageBuilder errorMessage)
{
operation.setErrorMessage(errorMessage);
}
/**
* {@inheritDoc}
*/
@Override
public void setInnerOperation(boolean isInnerOperation)
{
operation.setInnerOperation(isInnerOperation);
}
/**
* {@inheritDoc}
*/
@Override
public void setInternalOperation(boolean isInternalOperation)
{
operation.setInternalOperation(isInternalOperation);
}
/**
* {@inheritDoc}
*/
@Override
public void setMatchedDN(DN matchedDN)
{
operation.setMatchedDN(matchedDN);
}
/**
* {@inheritDoc}
*/
@Override
public void setReferralURLs(List<String> referralURLs)
{
operation.setReferralURLs(referralURLs);
}
/**
* {@inheritDoc}
*/
@Override
public void setResponseData(DirectoryException directoryException)
{
operation.setResponseData(directoryException);
}
/**
* {@inheritDoc}
*/
@Override
public void setResultCode(ResultCode resultCode)
{
operation.setResultCode(resultCode);
}
/**
* {@inheritDoc}
*/
@Override
public void setSynchronizationOperation(boolean isSynchronizationOperation)
{
operation.setSynchronizationOperation(isSynchronizationOperation);
}
/**
* {@inheritDoc}
*/
@Override
public final int hashCode()
{
return getClientConnection().hashCode() * (int) getOperationID();
}
/**
* {@inheritDoc}
*/
@Override
public final boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (obj instanceof Operation)
{
Operation other = (Operation) obj;
if (other.getClientConnection().equals(getClientConnection()))
{
return other.getOperationID() == getOperationID();
}
}
return false;
}
/**
* {@inheritDoc}
*/
@Override
public void toString(StringBuilder buffer)
{
operation.toString(buffer);
}
/**
* {@inheritDoc}
*/
@Override
public synchronized final void checkIfCanceled(boolean signalTooLate)
throws CanceledOperationException {
operation.checkIfCanceled(signalTooLate);
}
/**
* {@inheritDoc}
*/
@Override
public void registerPostResponseCallback(Runnable callback)
{
operation.registerPostResponseCallback(callback);
}
/** {@inheritDoc} */
@Override
public void run()
{
operation.run();
}
/**
* {@inheritDoc}
*/
@Override
public List<AdditionalLogItem> getAdditionalLogItems()
{
return operation.getAdditionalLogItems();
}
/**
*{@inheritDoc}
*/
@Override
public void addAdditionalLogItem(AdditionalLogItem item)
{
operation.addAdditionalLogItem(item);
}
}