001/* 002 * Copyright 2011-2017 UnboundID Corp. 003 * All Rights Reserved. 004 */ 005/* 006 * Copyright (C) 2011-2017 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 */ 021package com.unboundid.ldap.sdk; 022 023 024 025import com.unboundid.util.LDAPSDKRuntimeException; 026import com.unboundid.util.NotMutable; 027import com.unboundid.util.ThreadSafety; 028import com.unboundid.util.ThreadSafetyLevel; 029 030 031 032/** 033 * This class defines a version of the {@link LDAPException} class that may be 034 * thrown as a {@code RuntimeException} without the need for it to have been 035 * explicitly declared in the method's throws list. 036 */ 037@NotMutable() 038@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) 039public final class LDAPRuntimeException 040 extends LDAPSDKRuntimeException 041{ 042 /** 043 * The serial version UID for this serializable class. 044 */ 045 private static final long serialVersionUID = 6201514484547092642L; 046 047 048 049 // The LDAPException object wrapped by this runtime exception. 050 private final LDAPException ldapException; 051 052 053 054 /** 055 * Creates a new instance of this {@code LDAPRuntimeException} using the 056 * provided {@code LDAPException}. 057 * 058 * @param ldapException The {@code LDAPException} object wrapped by this 059 * runtime exception. 060 */ 061 public LDAPRuntimeException(final LDAPException ldapException) 062 { 063 super(ldapException.getMessage(), ldapException.getCause()); 064 065 this.ldapException = ldapException; 066 } 067 068 069 070 /** 071 * Retrieves the {@code LDAPException} object wrapped by this runtime 072 * exception. 073 * 074 * @return The {@code LDAPException} object wrapped by this runtime 075 * exception. 076 */ 077 public LDAPException getLDAPException() 078 { 079 return ldapException; 080 } 081 082 083 084 /** 085 * Throws the wrapped {@code LDAPException} object. 086 * 087 * @throws LDAPException The wrapped {@code LDAPException} object. 088 */ 089 public void throwLDAPException() 090 throws LDAPException 091 { 092 throw ldapException; 093 } 094 095 096 097 /** 098 * Retrieves the result code for this LDAP exception. 099 * 100 * @return The result code for this LDAP exception. 101 */ 102 public ResultCode getResultCode() 103 { 104 return ldapException.getResultCode(); 105 } 106 107 108 109 /** 110 * Retrieves the matched DN for this LDAP exception. 111 * 112 * @return The matched DN for this LDAP exception, or {@code null} if there 113 * is none. 114 */ 115 public String getMatchedDN() 116 { 117 return ldapException.getMatchedDN(); 118 } 119 120 121 122 /** 123 * Retrieves the diagnostic message returned by the directory server. 124 * 125 * @return The diagnostic message returned by the directory server, or 126 * {@code null} if there is none. 127 */ 128 public String getDiagnosticMessage() 129 { 130 return ldapException.getDiagnosticMessage(); 131 } 132 133 134 135 /** 136 * Retrieves the set of referral URLs for this LDAP exception. 137 * 138 * @return The set of referral URLs for this LDAP exception, or an empty 139 * array if there are none. 140 */ 141 public String[] getReferralURLs() 142 { 143 return ldapException.getReferralURLs(); 144 } 145 146 147 148 /** 149 * Indicates whether this result contains at least one control. 150 * 151 * @return {@code true} if this result contains at least one control, or 152 * {@code false} if not. 153 */ 154 public boolean hasResponseControl() 155 { 156 return ldapException.hasResponseControl(); 157 } 158 159 160 161 /** 162 * Indicates whether this result contains at least one control with the 163 * specified OID. 164 * 165 * @param oid The object identifier for which to make the determination. It 166 * must not be {@code null}. 167 * 168 * @return {@code true} if this result contains at least one control with 169 * the specified OID, or {@code false} if not. 170 */ 171 public boolean hasResponseControl(final String oid) 172 { 173 return ldapException.hasResponseControl(oid); 174 } 175 176 177 178 /** 179 * Retrieves the set of response controls for this LDAP exception. 180 * 181 * @return The set of response controls for this LDAP exception, or an empty 182 * array if there are none. 183 */ 184 public Control[] getResponseControls() 185 { 186 return ldapException.getResponseControls(); 187 } 188 189 190 191 /** 192 * Retrieves the response control with the specified OID. 193 * 194 * @param oid The OID of the control to retrieve. 195 * 196 * @return The response control with the specified OID, or {@code null} if 197 * there is no such control. 198 */ 199 public Control getResponseControl(final String oid) 200 { 201 return ldapException.getResponseControl(oid); 202 } 203 204 205 206 /** 207 * Creates a new {@code LDAPResult} object from this exception. 208 * 209 * @return The {@code LDAPResult} object created from this exception. 210 */ 211 public LDAPResult toLDAPResult() 212 { 213 return ldapException.toLDAPResult(); 214 } 215 216 217 218 /** 219 * {@inheritDoc} 220 */ 221 @Override() 222 public void toString(final StringBuilder buffer) 223 { 224 ldapException.toString(buffer); 225 } 226 227 228 229 /** 230 * {@inheritDoc} 231 */ 232 @Override() 233 public String getExceptionMessage() 234 { 235 return ldapException.getExceptionMessage(); 236 } 237}