001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
010 * or http://forgerock.org/license/CDDLv1.0.html.
011 * See the License for the specific language governing permissions
012 * and limitations under the License.
013 *
014 * When distributing Covered Code, include this CDDL HEADER in each
015 * file and include the License file at legal-notices/CDDLv1_0.txt.
016 * If applicable, add the following below this CDDL HEADER, with the
017 * fields enclosed by brackets "[]" replaced with your own identifying
018 * information:
019 *      Portions Copyright [yyyy] [name of copyright owner]
020 *
021 * CDDL HEADER END
022 *
023 *
024 *      Copyright 2010 Sun Microsystems, Inc.
025 *      Portions copyright 2012 ForgeRock AS.
026 */
027
028package org.forgerock.opendj.ldap;
029
030import java.io.IOException;
031
032import org.forgerock.opendj.ldap.responses.SearchResultReference;
033
034import org.forgerock.util.Reject;
035
036/**
037 * Thrown when an iteration over a set of search results using a
038 * {@code ConnectionEntryReader} encounters a {@code SearchResultReference}.
039 */
040@SuppressWarnings("serial")
041public final class SearchResultReferenceIOException extends IOException {
042    private final SearchResultReference reference;
043
044    /**
045     * Creates a new referral result IO exception with the provided
046     * {@code SearchResultReference}.
047     *
048     * @param reference
049     *            The {@code SearchResultReference} which may be later retrieved
050     *            by the {@link #getReference} method.
051     * @throws NullPointerException
052     *             If {@code reference} was {@code null}.
053     */
054    public SearchResultReferenceIOException(final SearchResultReference reference) {
055        super(Reject.checkNotNull(reference).toString());
056        this.reference = reference;
057    }
058
059    /**
060     * Returns the {@code SearchResultReference} which was encountered while
061     * processing the search results.
062     *
063     * @return The {@code SearchResultReference} which was encountered while
064     *         processing the search results.
065     */
066    public SearchResultReference getReference() {
067        return reference;
068    }
069}