001 /* 002 * Copyright 2012-2015 UnboundID Corp. 003 * All Rights Reserved. 004 */ 005 /* 006 * Copyright (C) 2015 UnboundID Corp. 007 * 008 * This program is free software; you can redistribute it and/or modify 009 * it under the terms of the GNU General Public License (GPLv2 only) 010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 011 * as published by the Free Software Foundation. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Public License for more details. 017 * 018 * You should have received a copy of the GNU General Public License 019 * along with this program; if not, see <http://www.gnu.org/licenses>. 020 */ 021 package com.unboundid.ldap.sdk.unboundidds.extensions; 022 023 024 025 import com.unboundid.ldap.sdk.Control; 026 import com.unboundid.ldap.sdk.ExtendedRequest; 027 import com.unboundid.ldap.sdk.ExtendedResult; 028 import com.unboundid.ldap.sdk.LDAPConnection; 029 import com.unboundid.ldap.sdk.LDAPException; 030 import com.unboundid.ldap.sdk.ResultCode; 031 import com.unboundid.util.NotMutable; 032 import com.unboundid.util.ThreadSafety; 033 import com.unboundid.util.ThreadSafetyLevel; 034 035 import static com.unboundid.ldap.sdk.unboundidds.extensions.ExtOpMessages.*; 036 037 038 039 /** 040 * <BLOCKQUOTE> 041 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID 042 * LDAP SDK for Java. It is not available for use in applications that 043 * include only the Standard Edition of the LDAP SDK, and is not supported for 044 * use in conjunction with non-UnboundID products. 045 * </BLOCKQUOTE> 046 * This class provides an implementation of the get subtree accessibility 047 * extended request, which may be used to request information about all subtree 048 * accessibility restrictions currently defined in the server, including for 049 * subtrees that are hidden or read-only. Subtree accessibility may be altered 050 * using the {@link SetSubtreeAccessibilityExtendedRequest}. 051 * <BR><BR> 052 * This extended request has an OID of 1.3.6.1.4.1.30221.1.6.20 and does not 053 * have a value. 054 * 055 * @see GetSubtreeAccessibilityExtendedResult 056 */ 057 @NotMutable() 058 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) 059 public final class GetSubtreeAccessibilityExtendedRequest 060 extends ExtendedRequest 061 { 062 /** 063 * The OID (1.3.6.1.4.1.30221.1.6.20) for the get subtree accessibility 064 * extended request. 065 */ 066 public static final String GET_SUBTREE_ACCESSIBILITY_REQUEST_OID = 067 "1.3.6.1.4.1.30221.1.6.20"; 068 069 070 071 /** 072 * The serial version UID for this serializable class. 073 */ 074 private static final long serialVersionUID = 6519976409372387402L; 075 076 077 078 /** 079 * Creates a new get subtree accessibility extended request. 080 * 081 * @param controls The set of controls to include in the request. It may be 082 * {@code null} or empty if no controls are needed. 083 */ 084 public GetSubtreeAccessibilityExtendedRequest(final Control... controls) 085 { 086 super(GET_SUBTREE_ACCESSIBILITY_REQUEST_OID, null, controls); 087 } 088 089 090 091 /** 092 * Creates a new get subtree accessibility extended request from the provided 093 * generic extended request. 094 * 095 * @param extendedRequest The generic extended request to use to create this 096 * get subtree accessibility extended request. 097 * 098 * @throws LDAPException If a problem occurs while decoding the request. 099 */ 100 public GetSubtreeAccessibilityExtendedRequest( 101 final ExtendedRequest extendedRequest) 102 throws LDAPException 103 { 104 super(extendedRequest); 105 106 if (extendedRequest.hasValue()) 107 { 108 throw new LDAPException(ResultCode.DECODING_ERROR, 109 ERR_GET_SUBTREE_ACCESSIBILITY_REQUEST_HAS_VALUE.get()); 110 } 111 } 112 113 114 115 /** 116 * {@inheritDoc} 117 */ 118 @Override() 119 public GetSubtreeAccessibilityExtendedResult process( 120 final LDAPConnection connection, final int depth) 121 throws LDAPException 122 { 123 final ExtendedResult extendedResponse = super.process(connection, depth); 124 return new GetSubtreeAccessibilityExtendedResult(extendedResponse); 125 } 126 127 128 129 /** 130 * {@inheritDoc} 131 */ 132 @Override() 133 public GetSubtreeAccessibilityExtendedRequest duplicate() 134 { 135 return duplicate(getControls()); 136 } 137 138 139 140 /** 141 * {@inheritDoc} 142 */ 143 @Override() 144 public GetSubtreeAccessibilityExtendedRequest duplicate( 145 final Control[] controls) 146 { 147 final GetSubtreeAccessibilityExtendedRequest r = 148 new GetSubtreeAccessibilityExtendedRequest(controls); 149 r.setResponseTimeoutMillis(getResponseTimeoutMillis(null)); 150 return r; 151 } 152 153 154 155 /** 156 * {@inheritDoc} 157 */ 158 @Override() 159 public String getExtendedRequestName() 160 { 161 return INFO_EXTENDED_REQUEST_NAME_GET_SUBTREE_ACCESSIBILITY.get(); 162 } 163 164 165 166 /** 167 * {@inheritDoc} 168 */ 169 @Override() 170 public void toString(final StringBuilder buffer) 171 { 172 buffer.append("GetSubtreeAccessibilityExtendedRequest("); 173 174 final Control[] controls = getControls(); 175 if (controls.length > 0) 176 { 177 buffer.append("controls={"); 178 for (int i=0; i < controls.length; i++) 179 { 180 if (i > 0) 181 { 182 buffer.append(", "); 183 } 184 185 buffer.append(controls[i]); 186 } 187 buffer.append('}'); 188 } 189 190 buffer.append(')'); 191 } 192 }