From 22094368c2865dcfb6daf8366425212b721a4657 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 05 Feb 2009 17:42:14 +0000
Subject: [PATCH] Merge ASN1 branch to trunk

---
 opends/src/server/org/opends/server/controls/SubtreeDeleteControl.java |   94 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 88 insertions(+), 6 deletions(-)

diff --git a/opends/src/server/org/opends/server/controls/SubtreeDeleteControl.java b/opends/src/server/org/opends/server/controls/SubtreeDeleteControl.java
index 1b440f2..185a593 100644
--- a/opends/src/server/org/opends/server/controls/SubtreeDeleteControl.java
+++ b/opends/src/server/org/opends/server/controls/SubtreeDeleteControl.java
@@ -26,21 +26,103 @@
  */
 package org.opends.server.controls;
 
-import org.opends.server.types.Control;
+
+
+import static org.opends.messages.ProtocolMessages.*;
 import static org.opends.server.util.ServerConstants.*;
 
+import java.io.IOException;
+
+import org.opends.messages.Message;
+import org.opends.server.protocols.asn1.ASN1Writer;
+import org.opends.server.types.ByteString;
+import org.opends.server.types.Control;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.ResultCode;
+
+
+
 /**
- * This class implements the subtree delete control.
+ * This class implements the subtree delete control defined in
+ * draft-armijo-ldap-treedelete. It makes it possible for clients to
+ * delete subtrees of entries.
  */
 public class SubtreeDeleteControl extends Control
 {
   /**
-   * Creates a new instance of Subtree Delete control with the
-   * default settings.
+   * ControlDecoder implementation to decode this control from a
+   * ByteString.
    */
-  public SubtreeDeleteControl()
+  private final static class Decoder implements
+      ControlDecoder<SubtreeDeleteControl>
   {
-    super(OID_SUBTREE_DELETE_CONTROL, false);
+    /**
+     * {@inheritDoc}
+     */
+    public SubtreeDeleteControl decode(boolean isCritical,
+        ByteString value) throws DirectoryException
+    {
+      if (value != null)
+      {
+        Message message =
+            ERR_SUBTREE_DELETE_INVALID_CONTROL_VALUE.get();
+        throw new DirectoryException(ResultCode.PROTOCOL_ERROR, message);
+      }
+
+      return new SubtreeDeleteControl(isCritical);
+    }
+
+
+
+    public String getOID()
+    {
+      return OID_SUBTREE_DELETE_CONTROL;
+    }
+
+  }
+
+
+
+  /**
+   * The Control Decoder that can be used to decode this control.
+   */
+  public static final ControlDecoder<SubtreeDeleteControl> DECODER =
+      new Decoder();
+
+
+
+  /**
+   * Creates a new subtree delete control.
+   *
+   * @param isCritical
+   *          Indicates whether the control should be considered
+   *          critical for the operation processing.
+   */
+  public SubtreeDeleteControl(boolean isCritical)
+  {
+    super(OID_SUBTREE_DELETE_CONTROL, isCritical);
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  protected void writeValue(ASN1Writer writer) throws IOException
+  {
+    // Nothing to do.
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void toString(StringBuilder buffer)
+  {
+    buffer.append("SubtreeDeleteControl()");
   }
 
 }

--
Gitblit v1.10.0