From f609c18967baa45b467124b7c01f4f7317214370 Mon Sep 17 00:00:00 2001
From: jarnou <jarnou@localhost>
Date: Tue, 17 Jul 2007 09:16:06 +0000
Subject: [PATCH] This fix is the refactoring of the unbind operation (issue 1990).

---
 opends/src/server/org/opends/server/core/UnbindOperation.java |  238 +----------------------------------------------------------
 1 files changed, 4 insertions(+), 234 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/UnbindOperation.java b/opends/src/server/org/opends/server/core/UnbindOperation.java
index 44363ac..14c6858 100644
--- a/opends/src/server/org/opends/server/core/UnbindOperation.java
+++ b/opends/src/server/org/opends/server/core/UnbindOperation.java
@@ -26,247 +26,17 @@
  */
 package org.opends.server.core;
 
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.opends.server.api.ClientConnection;
-import org.opends.server.loggers.debug.DebugLogger;
-import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.types.AbstractOperation;
-import org.opends.server.types.CancelRequest;
-import org.opends.server.types.CancelResult;
-import org.opends.server.types.Control;
-import org.opends.server.types.DisconnectReason;
-import org.opends.server.types.OperationType;
-import org.opends.server.types.operation.PostOperationUnbindOperation;
-import org.opends.server.types.operation.PreParseUnbindOperation;
-
-import static org.opends.server.loggers.AccessLogger.*;
-import static org.opends.server.messages.CoreMessages.*;
-import static org.opends.server.messages.MessageHandler.*;
+import org.opends.server.types.Operation;
 
 
 
 /**
- * This class defines an operation that may be used to close the connection
+ * This interface defines an operation that may be used to close the connection
  * between the client and the Directory Server.
  */
-public class UnbindOperation
-       extends AbstractOperation
-       implements PreParseUnbindOperation, PostOperationUnbindOperation
+public interface UnbindOperation
+       extends Operation
 {
 
-  /**
-   * The tracer object for the debug logger.
-   */
-  private static final DebugTracer TRACER = DebugLogger.getTracer();
-
-  /**
-   * Creates a new unbind operation with the provided information.
-   *
-   * @param  clientConnection  The client connection with which this operation
-   *                           is associated.
-   * @param  operationID       The operation ID for this operation.
-   * @param  messageID         The message ID of the request with which this
-   *                           operation is associated.
-   * @param  requestControls   The set of controls included in the request.
-   */
-  public UnbindOperation(ClientConnection clientConnection, long operationID,
-                         int messageID, ArrayList<Control> requestControls)
-  {
-    super(clientConnection, operationID, messageID, requestControls);
-
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final OperationType getOperationType()
-  {
-    // Note that no debugging will be done in this method because it is a likely
-    // candidate for being called by the logging subsystem.
-
-    return OperationType.UNBIND;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final void disconnectClient(DisconnectReason disconnectReason,
-                                     boolean sendNotification, String message,
-                                     int messageID)
-  {
-    // Since unbind operations can't be cancelled, we don't need to do anything
-    // but forward the request on to the client connection.
-    clientConnection.disconnect(disconnectReason, sendNotification, message,
-                                messageID);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final String[][] getRequestLogElements()
-  {
-    // Note that no debugging will be done in this method because it is a likely
-    // candidate for being called by the logging subsystem.
-
-    // There are no special elements that should be logged for an unbind
-    // request.
-    return new String[0][];
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final String[][] getResponseLogElements()
-  {
-    // Note that no debugging will be done in this method because it is a likely
-    // candidate for being called by the logging subsystem.
-
-    // There is no unbind response, nor are there any special elements that
-    // should be logged when an unbind occurs.
-    return new String[0][];
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final List<Control> getResponseControls()
-  {
-    // An unbind operation can never have a response, so just return an empty
-    // list.
-    return NO_RESPONSE_CONTROLS;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final void addResponseControl(Control control)
-  {
-    // An unbind operation can never have a response, so just ignore this.
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final void removeResponseControl(Control control)
-  {
-    // An unbind operation can never have a response, so just ignore this.
-  }
-
-  /**
-   * Performs the work of actually processing this operation.  This
-   * should include all processing for the operation, including
-   * invoking plugins, logging messages, performing access control,
-   * managing synchronization, and any other work that might need to
-   * be done in the course of processing.
-   */
-  public final void run()
-  {
-    // Get the plugin config manager that will be used for invoking plugins.
-    PluginConfigManager pluginConfigManager =
-         DirectoryServer.getPluginConfigManager();
-    boolean skipPostOperation = false;
-
-    setProcessingStartTime();
-
-
-    // Invoke the pre-parse unbind plugins.  We don't care about the result
-    // since we're going to close the connection anyway.
-    pluginConfigManager.invokePreParseUnbindPlugins(this);
-
-
-    // Log the unbind request.
-    logUnbind(this);
-
-
-    // Check the set of controls included in the request.  If there are any,
-    // see if any special processing is needed.
-    // NYI
-
-
-    // Disconnect the client.
-    getClientConnection().disconnect(DisconnectReason.UNBIND, false, null, -1);
-
-
-    // Invoke the post-operation unbind plugins.
-    pluginConfigManager.invokePostOperationUnbindPlugins(this);
-
-    setProcessingStopTime();
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final CancelResult cancel(CancelRequest cancelRequest)
-  {
-    cancelRequest.addResponseMessage(getMessage(MSGID_CANNOT_CANCEL_UNBIND));
-    return CancelResult.CANNOT_CANCEL;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final CancelRequest getCancelRequest()
-  {
-    return null;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public boolean setCancelRequest(CancelRequest cancelRequest)
-  {
-    // Unbind operations cannot be canceled.
-    return false;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
-  public final void toString(StringBuilder buffer)
-  {
-    buffer.append("UnbindOperation(connID=");
-    buffer.append(clientConnection.getConnectionID());
-    buffer.append(", opID=");
-    buffer.append(operationID);
-    buffer.append(")");
-  }
-
 }
 

--
Gitblit v1.10.0