| | |
| | | */ |
| | | 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()"); |
| | | } |
| | | |
| | | } |