From a9dd51631135b201b46f32c862ea72006d7a3a65 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).
---
opendj-sdk/opends/src/server/org/opends/server/loggers/TextAuditLogPublisher.java | 4
opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java | 6
opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java | 3
opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java | 4
opendj-sdk/opends/src/server/org/opends/server/loggers/AccessLogger.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java | 18
opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java | 238 -----------------------
opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperationBasis.java | 275 +++++++++++++++++++++++++++
opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java | 6
10 files changed, 304 insertions(+), 256 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java
index 6bed1c3..9007267 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java
@@ -424,7 +424,8 @@
* information to use to log the unbind
* request.
*/
- public abstract void logUnbind(UnbindOperation unbindOperation);
+ public abstract void logUnbind(UnbindOperationBasis
+ unbindOperation);
/**
* Gets the DN of the configuration entry for this access log
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
index fda51ae..6022046 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
@@ -2470,7 +2470,7 @@
* @return The result of processing the pre-parse unbind plugins.
*/
public PreParsePluginResult invokePreParseUnbindPlugins(
- UnbindOperation unbindOperation)
+ UnbindOperationBasis unbindOperation)
{
PreParsePluginResult result = null;
@@ -3938,7 +3938,7 @@
* @return The result of processing the post-operation unbind plugins.
*/
public PostOperationPluginResult invokePostOperationUnbindPlugins(
- UnbindOperation unbindOperation)
+ UnbindOperationBasis unbindOperation)
{
PostOperationPluginResult result = null;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java
index 44363ac..14c6858 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java
+++ b/opendj-sdk/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(")");
- }
-
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperationBasis.java b/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperationBasis.java
new file mode 100644
index 0000000..17856b6
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperationBasis.java
@@ -0,0 +1,275 @@
+/*
+ * 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
+ *
+ *
+ * Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ */
+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.*;
+
+
+
+/**
+ * This class defines an operation that may be used to close the connection
+ * between the client and the Directory Server.
+ */
+public class UnbindOperationBasis
+ extends AbstractOperation
+ implements UnbindOperation,
+ PreParseUnbindOperation,
+ PostOperationUnbindOperation
+{
+
+ /**
+ * 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 UnbindOperationBasis(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(")");
+ }
+
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/AccessLogger.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/AccessLogger.java
index 33ddf03..395c23d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/AccessLogger.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/AccessLogger.java
@@ -820,7 +820,7 @@
* @param unbindOperation The unbind operation containing the information to
* use to log the unbind request.
*/
- public static void logUnbind(UnbindOperation unbindOperation)
+ public static void logUnbind(UnbindOperationBasis unbindOperation)
{
for (AccessLogPublisher publisher : accessPublishers)
{
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
index 731c434..ea42ae1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
@@ -46,7 +46,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperationBasis;
import org.opends.server.core.SearchOperation;
-import org.opends.server.core.UnbindOperation;
+import org.opends.server.core.UnbindOperationBasis;
import org.opends.server.types.*;
import org.opends.server.util.TimeThread;
@@ -1679,7 +1679,7 @@
* @param unbindOperation The unbind operation containing the info to
* use to log the unbind request.
*/
- public void logUnbind(UnbindOperation unbindOperation)
+ public void logUnbind(UnbindOperationBasis unbindOperation)
{
long connectionID = unbindOperation.getConnectionID();
if (connectionID < 0)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAuditLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAuditLogPublisher.java
index 5388c5e..1eda00c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAuditLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAuditLogPublisher.java
@@ -45,7 +45,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperationBasis;
import org.opends.server.core.SearchOperation;
-import org.opends.server.core.UnbindOperation;
+import org.opends.server.core.UnbindOperationBasis;
import org.opends.server.types.*;
import org.opends.server.util.Base64;
import org.opends.server.util.StaticUtils;
@@ -860,7 +860,7 @@
* {@inheritDoc}
*/
@Override()
- public void logUnbind(UnbindOperation unbindOperation)
+ public void logUnbind(UnbindOperationBasis unbindOperation)
{
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
index a0647f2..23eaf49 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
@@ -1039,8 +1039,10 @@
// unbind the underlying connection
try
{
- UnbindOperation unbindOp = new UnbindOperation((ClientConnection) this,
- this.nextOperationID(), this.nextMessageID(), null);
+ UnbindOperationBasis unbindOp = new UnbindOperationBasis(
+ (ClientConnection) this,
+ this.nextOperationID(),
+ this.nextMessageID(), null);
unbindOp.run();
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 5d1db9a..1330c29 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -66,7 +66,7 @@
import org.opends.server.core.PluginConfigManager;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.SearchOperationBasis;
-import org.opends.server.core.UnbindOperation;
+import org.opends.server.core.UnbindOperationBasis;
import org.opends.server.extensions.NullConnectionSecurityProvider;
import org.opends.server.extensions.TLSCapableConnection;
import org.opends.server.extensions.TLSConnectionSecurityProvider;
@@ -2436,8 +2436,8 @@
private boolean processUnbindRequest(LDAPMessage message,
ArrayList<Control> controls)
{
- UnbindOperation unbindOp =
- new UnbindOperation(this, nextOperationID.getAndIncrement(),
+ UnbindOperationBasis unbindOp =
+ new UnbindOperationBasis(this, nextOperationID.getAndIncrement(),
message.getMessageID(), controls);
unbindOp.run();
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
index c759340..29899c4 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
@@ -64,9 +64,9 @@
return new Operation[]
{
- new UnbindOperation(conn, conn.nextOperationID(), conn.nextMessageID(),
+ new UnbindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
null),
- new UnbindOperation(conn, conn.nextOperationID(), conn.nextMessageID(),
+ new UnbindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
new ArrayList<Control>())
};
}
@@ -79,7 +79,7 @@
*
* @param unbindOperation The operation to be tested.
*/
- private void examineCompletedOperation(UnbindOperation unbindOperation)
+ private void examineCompletedOperation(UnbindOperationBasis unbindOperation)
{
assertTrue(unbindOperation.getProcessingStartTime() > 0);
assertTrue(unbindOperation.getProcessingStopTime() > 0);
@@ -102,8 +102,8 @@
InternalClientConnection conn =
InternalClientConnection.getRootConnection();
- UnbindOperation unbindOperation =
- new UnbindOperation(conn, conn.nextOperationID(),
+ UnbindOperationBasis unbindOperation =
+ new UnbindOperationBasis(conn, conn.nextOperationID(),
conn.nextMessageID(), new ArrayList<Control>());
unbindOperation.run();
examineCompletedOperation(unbindOperation);
@@ -127,8 +127,8 @@
CancelRequest cancelRequest =
new CancelRequest(false, "Test Unbind Cancel");
- UnbindOperation unbindOperation =
- new UnbindOperation(conn, conn.nextOperationID(),
+ UnbindOperationBasis unbindOperation =
+ new UnbindOperationBasis(conn, conn.nextOperationID(),
conn.nextMessageID(), new ArrayList<Control>());
assertEquals(unbindOperation.cancel(cancelRequest),
CancelResult.CANNOT_CANCEL);
@@ -148,8 +148,8 @@
CancelRequest cancelRequest =
new CancelRequest(false, "Test Unbind Cancel");
- UnbindOperation unbindOperation =
- new UnbindOperation(conn, conn.nextOperationID(),
+ UnbindOperationBasis unbindOperation =
+ new UnbindOperationBasis(conn, conn.nextOperationID(),
conn.nextMessageID(), new ArrayList<Control>());
assertNull(unbindOperation.getCancelRequest());
--
Gitblit v1.10.0