Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.ldap.support;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ldap.NamingException;
import org.springframework.ldap.NoSuchAttributeException;
import org.springframework.util.Assert;
import javax.naming.CompositeName;
import javax.naming.InvalidNameException;
import javax.naming.Name;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapContext;
import javax.naming.ldap.LdapName;
import javax.naming.ldap.Rdn;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.NoSuchElementException;
/**
* Generic utility methods for working with LDAP. Mainly for internal use within
* the framework, but also useful for custom code.
*
* @author Ulrik Sandberg
* @author Mattias Hellborg Arthursson
* @since 1.2
*/
public final class LdapUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(LdapUtils.class);
private static final int HEX = 16;
/**
* Not to be instantiated.
*/
private LdapUtils() {
}
/**
* Close the given JNDI Context and ignore any thrown exception. This is
* useful for typical finally blocks in JNDI code.
*
* @param context the JNDI Context to close (may be null)
*/
public static void closeContext(DirContext context) {
if (context != null) {
try {
context.close();
}
catch (NamingException ex) {
LOGGER.debug("Could not close JNDI DirContext", ex);
}
catch (Throwable ex) {
// We don't trust the JNDI provider: It might throw
// RuntimeException or Error.
LOGGER.debug("Unexpected exception on closing JNDI DirContext", ex);
}
}
}
/**
* Convert the specified checked {@link javax.naming.NamingException
* NamingException} to a Spring LDAP runtime
* {@link org.springframework.ldap.NamingException NamingException}
* equivalent.
*
* @param ex the original checked NamingException to convert
* @return the Spring LDAP runtime NamingException wrapping the given
* exception
*/
public static NamingException convertLdapException(javax.naming.NamingException ex) {
Assert.notNull(ex, "NamingException must not be null");
if (javax.naming.directory.AttributeInUseException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.AttributeInUseException(
(javax.naming.directory.AttributeInUseException) ex);
}
if (javax.naming.directory.AttributeModificationException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.AttributeModificationException(
(javax.naming.directory.AttributeModificationException) ex);
}
if (javax.naming.CannotProceedException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.CannotProceedException((javax.naming.CannotProceedException) ex);
}
if (javax.naming.CommunicationException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.CommunicationException((javax.naming.CommunicationException) ex);
}
if (javax.naming.ConfigurationException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.ConfigurationException((javax.naming.ConfigurationException) ex);
}
if (javax.naming.ContextNotEmptyException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.ContextNotEmptyException((javax.naming.ContextNotEmptyException) ex);
}
if (javax.naming.InsufficientResourcesException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InsufficientResourcesException(
(javax.naming.InsufficientResourcesException) ex);
}
if (javax.naming.InterruptedNamingException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InterruptedNamingException((javax.naming.InterruptedNamingException) ex);
}
if (javax.naming.directory.InvalidAttributeIdentifierException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InvalidAttributeIdentifierException(
(javax.naming.directory.InvalidAttributeIdentifierException) ex);
}
if (javax.naming.directory.InvalidAttributesException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InvalidAttributesException(
(javax.naming.directory.InvalidAttributesException) ex);
}
if (javax.naming.directory.InvalidAttributeValueException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InvalidAttributeValueException(
(javax.naming.directory.InvalidAttributeValueException) ex);
}
if (javax.naming.InvalidNameException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InvalidNameException((javax.naming.InvalidNameException) ex);
}
if (javax.naming.directory.InvalidSearchControlsException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InvalidSearchControlsException(
(javax.naming.directory.InvalidSearchControlsException) ex);
}
if (javax.naming.directory.InvalidSearchFilterException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.InvalidSearchFilterException(
(javax.naming.directory.InvalidSearchFilterException) ex);
}
if (javax.naming.ldap.LdapReferralException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.LdapReferralException((javax.naming.ldap.LdapReferralException) ex);
}
if (javax.naming.ReferralException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.ReferralException((javax.naming.ReferralException) ex);
}
// LimitExceededException hierarchy
if (javax.naming.SizeLimitExceededException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.SizeLimitExceededException((javax.naming.SizeLimitExceededException) ex);
}
if (javax.naming.TimeLimitExceededException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.TimeLimitExceededException((javax.naming.TimeLimitExceededException) ex);
}
// this class is the superclass of the two above
if (javax.naming.LimitExceededException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.LimitExceededException((javax.naming.LimitExceededException) ex);
}
// LinkException hierarchy
if (javax.naming.LinkLoopException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.LinkLoopException((javax.naming.LinkLoopException) ex);
}
if (javax.naming.MalformedLinkException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.MalformedLinkException((javax.naming.MalformedLinkException) ex);
}
// this class is the superclass of the two above
if (javax.naming.LinkException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.LinkException((javax.naming.LinkException) ex);
}
if (javax.naming.NameAlreadyBoundException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NameAlreadyBoundException((javax.naming.NameAlreadyBoundException) ex);
}
if (javax.naming.NameNotFoundException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NameNotFoundException((javax.naming.NameNotFoundException) ex);
}
// NamingSecurityException hierarchy
if (javax.naming.NoPermissionException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NoPermissionException((javax.naming.NoPermissionException) ex);
}
if (javax.naming.AuthenticationException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.AuthenticationException((javax.naming.AuthenticationException) ex);
}
if (javax.naming.AuthenticationNotSupportedException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.AuthenticationNotSupportedException(
(javax.naming.AuthenticationNotSupportedException) ex);
}
if (javax.naming.NamingSecurityException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NamingSecurityException((javax.naming.NamingSecurityException) ex);
}
if (javax.naming.NoInitialContextException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NoInitialContextException((javax.naming.NoInitialContextException) ex);
}
if (javax.naming.directory.NoSuchAttributeException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NoSuchAttributeException(
(javax.naming.directory.NoSuchAttributeException) ex);
}
if (javax.naming.NotContextException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.NotContextException((javax.naming.NotContextException) ex);
}
if (javax.naming.OperationNotSupportedException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.OperationNotSupportedException(
(javax.naming.OperationNotSupportedException) ex);
}
if (javax.naming.PartialResultException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.PartialResultException((javax.naming.PartialResultException) ex);
}
if (javax.naming.directory.SchemaViolationException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.SchemaViolationException(
(javax.naming.directory.SchemaViolationException) ex);
}
if (javax.naming.ServiceUnavailableException.class.isAssignableFrom(ex.getClass())) {
return new org.springframework.ldap.ServiceUnavailableException(
(javax.naming.ServiceUnavailableException) ex);
}
// fallback
return new org.springframework.ldap.UncategorizedLdapException(ex);
}
/**
* Get the actual class of the supplied DirContext instance; LdapContext or
* DirContext.
*
* @param context the DirContext instance to check.
* @return LdapContext.class if context is an LdapContext, DirContext.class
* otherwise.
*/
public static Class getActualTargetClass(DirContext context) {
if (context instanceof LdapContext) {
return LdapContext.class;
}
return DirContext.class;
}
/**
* Collect all the values of a the specified attribute from the supplied
* Attributes.
*
* @param attributes The Attributes; not null.
* @param name The name of the Attribute to get values for.
* @param collection the collection to collect the values in.
* @throws NoSuchAttributeException if no attribute with the specified name
* exists.
* @since 1.3
*/
public static void collectAttributeValues(Attributes attributes, String name, Collection