All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPDN Maven / Gradle / Ivy

/*
 * Copyright 2009-2023 Ping Identity Corporation
 * All Rights Reserved.
 */
/*
 * Copyright 2009-2023 Ping Identity Corporation
 *
 * 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.
 */
/*
 * Copyright (C) 2009-2023 Ping Identity Corporation
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License (GPLv2 only)
 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see .
 */
package com.unboundid.ldap.sdk.migrate.ldapjdk;



import com.unboundid.ldap.sdk.DN;
import com.unboundid.ldap.sdk.RDN;
import com.unboundid.util.Debug;
import com.unboundid.util.NotMutable;
import com.unboundid.util.NotNull;
import com.unboundid.util.StaticUtils;
import com.unboundid.util.ThreadSafety;
import com.unboundid.util.ThreadSafetyLevel;



/**
 * This class provides a set of utility methods for working with LDAP DNs.
 * 

* This class is primarily intended to be used in the process of updating * applications which use the Netscape Directory SDK for Java to switch to or * coexist with the UnboundID LDAP SDK for Java. For applications not written * using the Netscape Directory SDK for Java, the {@link DN} class should be * used instead. */ @NotMutable() @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) public final class LDAPDN { /** * Prevent this class from being instantiated. */ private LDAPDN() { // No implementation required. } /** * Retrieves a normalized representation of the provided DN. If the provided * string does not represent a valid distinguished name, then the value * returned by this method will not be reliable. * * @param dn The string representation of the DN to be normalized. * * @return A normalized representation of the provided DN. */ @NotNull() public static String normalize(@NotNull final String dn) { try { return DN.normalize(dn); } catch (final Exception e) { Debug.debugException(e); return StaticUtils.toLowerCase(dn.trim()); } } /** * Explodes the provided DN into individual RDN components. If the provided * string does not represent a valid distinguished name, then the value * returned by this method will not be reliable. * * @param dn The DN to be exploded into its RDN components. * @param noTypes Indicates whether to exclude the attribute names and * equal signs and only include the values of the RDN * components. * * @return An exploded representation of the provided DN. */ @NotNull() public static String[] explodeDN(@NotNull final String dn, final boolean noTypes) { try { final RDN[] rdns = new DN(dn).getRDNs(); final String[] rdnStrings = new String[rdns.length]; for (int i=0; i < rdns.length; i++) { if (noTypes) { final StringBuilder buffer = new StringBuilder(); for (final String s : rdns[i].getAttributeValues()) { if (buffer.length() > 0) { buffer.append('+'); } buffer.append(s); } rdnStrings[i] = buffer.toString(); } else { rdnStrings[i] = rdns[i].toString(); } } return rdnStrings; } catch (final Exception e) { Debug.debugException(e); return new String[] { dn }; } } /** * Explodes the provided RDN into individual name-value pairs. If the * provided string does not represent a valid relative distinguished name, * then the value returned by this method will not be reliable. * * @param rdn The RDN to be exploded into its name-value pairs. * @param noTypes Indicates whether to exclude the attribute names and * equal signs and only include the values of the components. * * @return An exploded representation of the provided DN. */ @NotNull() public static String[] explodeRDN(@NotNull final String rdn, final boolean noTypes) { try { final RDN rdnObject = new RDN(rdn); final String[] values = rdnObject.getAttributeValues(); if (noTypes) { return values; } final String[] names = rdnObject.getAttributeNames(); final String[] returnStrs = new String[names.length]; for (int i=0; i < names.length; i++) { returnStrs[i] = names[i] + '=' + values[i]; } return returnStrs; } catch (final Exception e) { Debug.debugException(e); return new String[] { rdn }; } } /** * Indicates whether the provided strings represent the same distinguished * name. * * @param dn1 The first DN to be compared. * @param dn2 The second DN to be compared. * * @return {@code true} if the provided strings represent the same * distinguished name, or {@code false} if not or if either of the * values cannot be parsed as a valid DN. */ public static boolean equals(@NotNull final String dn1, @NotNull final String dn2) { try { return DN.equals(dn1, dn2); } catch (final Exception e) { Debug.debugException(e); return false; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy