/*
|
* 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
|
* trunk/opends/resource/legal-notices/OpenDS.LICENSE
|
* or https://OpenDS.dev.java.net/OpenDS.LICENSE.
|
* 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
|
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 2009 Sun Microsystems, Inc.
|
*/
|
|
package org.opends.sdk.ldap;
|
|
|
|
import javax.net.ssl.SSLContext;
|
|
import org.opends.sdk.schema.Schema;
|
import org.opends.sdk.util.Validator;
|
|
|
|
/**
|
* Common connection options for LDAP connections.
|
*/
|
public final class LDAPConnectionOptions
|
{
|
private Schema schema = Schema.getDefaultSchema();
|
|
private SSLContext sslContext = null;
|
|
private boolean useStartTLS = false;
|
|
|
|
/**
|
* Creates a copy of the provided connection options.
|
*
|
* @param options
|
* The options to be copied.
|
* @return The copy of the provided connection options.
|
*/
|
public static LDAPConnectionOptions copyOf(
|
LDAPConnectionOptions options)
|
{
|
return defaultOptions().assign(options);
|
}
|
|
|
|
/**
|
* Creates a new set of connection options with default settings. SSL
|
* will not be enabled, nor will key or trust managers be defined.
|
*
|
* @return The new connection options.
|
*/
|
public static LDAPConnectionOptions defaultOptions()
|
{
|
return new LDAPConnectionOptions();
|
}
|
|
|
|
// Prevent direct instantiation.
|
private LDAPConnectionOptions()
|
{
|
// Nothing to do.
|
}
|
|
|
|
/**
|
* Returns the schema which will be used to decode responses from the
|
* server. By default the schema returned by
|
* {@link Schema#getDefaultSchema()} will be used.
|
*
|
* @return The schema which will be used to decode responses from the
|
* server.
|
*/
|
public Schema getSchema()
|
{
|
return schema;
|
}
|
|
|
|
/**
|
* Sets the schema which will be used to decode responses from the
|
* server. By default the schema returned by
|
* {@link Schema#getDefaultSchema()} will be used.
|
*
|
* @param schema
|
* The schema which will be used to decode responses from the
|
* server.
|
* @return A reference to this LDAP connection options.
|
* @throws NullPointerException
|
* If {@code schema} was {@code null}.
|
*/
|
public LDAPConnectionOptions setSchema(Schema schema)
|
throws NullPointerException
|
{
|
Validator.ensureNotNull(schema);
|
this.schema = schema;
|
return this;
|
}
|
|
|
|
/**
|
* Returns the SSL context which will be used when initiating
|
* connections with the Directory Server. By default no SSL context
|
* will be used, indicating that connections will not be secured. If a
|
* non-{@code null} SSL context is returned then connections will be
|
* secured using either SSL or StartTLS depending on
|
* {@link #useStartTLS()}.
|
*
|
* @return The SSL context which will be used when initiating secure
|
* connections with the Directory Server, which may be {@code
|
* null} indicating that connections will not be secured.
|
*/
|
public SSLContext getSSLContext()
|
{
|
return sslContext;
|
}
|
|
|
|
/**
|
* Sets the SSL context which will be used when initiating connections
|
* with the Directory Server. By default no SSL context will be used,
|
* indicating that connections will not be secured. If a non-{@code
|
* null} SSL context is returned then connections will be secured
|
* using either SSL or StartTLS depending on {@link #useStartTLS()}.
|
*
|
* @param sslContext
|
* The SSL context which will be used when initiating secure
|
* connections with the Directory Server, which may be
|
* {@code null} indicating that connections will not be
|
* secured.
|
* @return A reference to this LDAP connection options.
|
*/
|
public LDAPConnectionOptions setSSLContext(SSLContext sslContext)
|
{
|
this.sslContext = sslContext;
|
return this;
|
}
|
|
|
|
/**
|
* Indicates whether or not SSL or StartTLS should be used for
|
* securing connections when an SSL context is specified. By default
|
* SSL will be used in preference to StartTLS.
|
*
|
* @return {@code true} if StartTLS should be used for securing
|
* connections when an SSL context is specified, otherwise
|
* {@code false} indicating that SSL should be used.
|
*/
|
public boolean useStartTLS()
|
{
|
return useStartTLS;
|
}
|
|
|
|
/**
|
* Specifies whether or not SSL or StartTLS should be used for
|
* securing connections when an SSL context is specified. By default
|
* SSL will be used in preference to StartTLS.
|
*
|
* @param useStartTLS
|
* {@code true} if StartTLS should be used for securing
|
* connections when an SSL context is specified, otherwise
|
* {@code false} indicating that SSL should be used.
|
* @return A reference to this LDAP connection options.
|
*/
|
public LDAPConnectionOptions setUseStartTLS(boolean useStartTLS)
|
{
|
this.useStartTLS = useStartTLS;
|
return this;
|
}
|
|
|
|
// Assigns the provided options to this set of options.
|
LDAPConnectionOptions assign(LDAPConnectionOptions options)
|
{
|
this.schema = options.schema;
|
this.sslContext = options.sslContext;
|
this.useStartTLS = options.useStartTLS;
|
return this;
|
}
|
|
}
|