/* * 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 legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * 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 legal-notices/CDDLv1_0.txt. * 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 2010 Sun Microsystems, Inc. */ package org.forgerock.opendj.ldap.controls; import static org.forgerock.opendj.ldap.CoreMessages.ERR_SUBTREE_DELETE_CONTROL_BAD_OID; import static org.forgerock.opendj.ldap.CoreMessages.ERR_SUBTREE_DELETE_INVALID_CONTROL_VALUE; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.DecodeException; import org.forgerock.opendj.ldap.DecodeOptions; import com.forgerock.opendj.util.Validator; /** * The tree delete request control as defined in draft-armijo-ldap-treedelete. * This control allows a client to delete an entire subtree of a container entry * in a single delete operation. * *
* Connection connection = ...; * String baseDN = ...; * * DeleteRequest request = * Requests.newDeleteRequest(baseDN) * .addControl(SubtreeDeleteRequestControl.newControl(true)); * connection.delete(request); ** * @see draft-armijo-ldap-treedelete * - Tree Delete Control */ public final class SubtreeDeleteRequestControl implements Control { /** * The OID for the subtree delete request control. */ public static final String OID = "1.2.840.113556.1.4.805"; private static final SubtreeDeleteRequestControl CRITICAL_INSTANCE = new SubtreeDeleteRequestControl(true); private static final SubtreeDeleteRequestControl NONCRITICAL_INSTANCE = new SubtreeDeleteRequestControl(false); /** * A decoder which can be used for decoding the sub-tree delete request * control. */ public static final ControlDecoder