1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 * 19 */ 20 21 package org.apache.directory.api.ldap.codec.api; 22 23 24 import org.apache.directory.api.asn1.DecoderException; 25 import org.apache.directory.api.ldap.model.message.Message; 26 import org.apache.directory.api.ldap.model.message.ResultCodeEnum; 27 import org.apache.directory.api.ldap.model.message.ResultResponse; 28 import org.apache.directory.api.ldap.model.name.Dn; 29 30 31 /** 32 * Thrown when a Decoder has encountered a failure condition during a decode. 33 * 34 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 35 */ 36 public class ResponseCarryingException extends DecoderException 37 { 38 /** 39 * Declares the Serial Version Uid. 40 * 41 * @see <a 42 * href="http://c2.com/cgi/wiki?AlwaysDeclareSerialVersionUid">Always 43 * Declare Serial Version Uid</a> 44 */ 45 private static final long serialVersionUID = 1L; 46 47 /** The response with the error cause */ 48 private Message response; 49 50 51 /** 52 * Creates a DecoderException 53 * 54 * @param message A message with meaning to a human 55 */ 56 public ResponseCarryingException( String message ) 57 { 58 super( message ); 59 } 60 61 62 /** 63 * Creates a DecoderException 64 * 65 * @param message A message with meaning to a human 66 * @param cause The Exception which caused the error 67 */ 68 public ResponseCarryingException( String message, ResultResponse response, ResultCodeEnum code, 69 Dn matchedDn, Throwable cause ) 70 { 71 super( message, cause ); 72 73 response.getLdapResult().setDiagnosticMessage( message ); 74 response.getLdapResult().setResultCode( code ); 75 response.getLdapResult().setMatchedDn( matchedDn ); 76 77 this.response = response; 78 } 79 80 81 /** 82 * Set a response if we get an exception while parsing the message 83 * @param response the constructed response 84 */ 85 public void setResponse( Message response ) 86 { 87 this.response = response; 88 } 89 90 91 /** 92 * Get the constructed response 93 * @return The constructed response 94 */ 95 public Message getResponse() 96 { 97 return response; 98 } 99 100 }