/*
|
* 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 2008 Sun Microsystems, Inc.
|
* Portions Copyright 2013-2015 ForgeRock AS.
|
*/
|
|
package org.opends.admin.ads;
|
import org.opends.server.types.OpenDsException;
|
|
import javax.naming.NamingException;
|
|
import org.opends.admin.ads.util.ApplicationTrustManager;
|
|
/**
|
* This class represents the Exception that can occur while reading server
|
* configuration through the TopologyCache class.
|
*/
|
public class TopologyCacheException extends OpenDsException {
|
|
private static final long serialVersionUID = 1709535837273360382L;
|
private Type type;
|
private String ldapUrl;
|
private ApplicationTrustManager trustManager;
|
|
/**
|
* Error type.
|
*/
|
public enum Type
|
{
|
/**
|
* Error reading the ADS.
|
*/
|
GENERIC_READING_ADS,
|
/**
|
* Creating connection to a particular server.
|
*/
|
GENERIC_CREATING_CONNECTION,
|
/**
|
* Error reading the configuration of a particular server.
|
*/
|
GENERIC_READING_SERVER,
|
/**
|
* The DN provided in the DirContext of ADS is not of a global
|
* administrator.
|
*/
|
NOT_GLOBAL_ADMINISTRATOR,
|
/**
|
* Not enough permissions to read the server configuration.
|
*/
|
NO_PERMISSIONS,
|
/**
|
* Timeout reading the configuration of a particular server.
|
*/
|
TIMEOUT,
|
/**
|
* Unexpected error.
|
*/
|
BUG
|
}
|
|
/**
|
* Constructor for the exception that must be generated when an
|
* ADSContextException occurs.
|
* @param ace the exception which is the cause of this exception.
|
*/
|
public TopologyCacheException(ADSContextException ace)
|
{
|
super(ace);
|
type = Type.GENERIC_READING_ADS;
|
}
|
|
/**
|
* Constructor for a generic Exception.
|
* @param type the type of this exception.
|
* @param t the cause of this exception.
|
*/
|
public TopologyCacheException(Type type, Throwable t)
|
{
|
super(t);
|
this.type = type;
|
}
|
|
/**
|
* Constructor for the exception that must be generated when a
|
* NamingException occurs.
|
* @param type the type of this exception.
|
* @param ne the NamingException that generated this exception.
|
* @param trustManager the ApplicationTrustManager used when the
|
* NamingException occurred.
|
* @param ldapUrl the LDAP URL of the server we where connected to (or trying
|
* to connect) when the NamingException was generated.
|
*/
|
public TopologyCacheException(Type type, NamingException ne,
|
ApplicationTrustManager trustManager, String ldapUrl)
|
{
|
super(ne);
|
this.type = type;
|
this.ldapUrl = ldapUrl;
|
this.trustManager = trustManager;
|
}
|
|
/**
|
* Returns the type of this exception.
|
* @return the type of this exception.
|
*/
|
public Type getType()
|
{
|
return type;
|
}
|
|
/**
|
* Returns the LDAP URL of the server we where connected to (or trying
|
* to connect) when this exception was generated.
|
* @return the LDAP URL of the server we where connected to (or trying
|
* to connect) when this exception was generated.
|
*/
|
public String getLdapUrl()
|
{
|
return ldapUrl;
|
}
|
|
/**
|
* Returns the host port representation of the server we where connected to
|
* (or trying to connect) when this exception was generated.
|
* @return the host port representation of the server we where connected to
|
* (or trying to connect) when this exception was generated.
|
*/
|
public String getHostPort()
|
{
|
int index = ldapUrl.indexOf("//");
|
return ldapUrl.substring(index + 2);
|
}
|
|
/**
|
* Returns the ApplicationTrustManager that we were using when this exception
|
* was generated.
|
* @return the ApplicationTrustManager that we were using when this exception
|
* was generated.
|
*/
|
public ApplicationTrustManager getTrustManager()
|
{
|
return trustManager;
|
}
|
}
|