/* * 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-2009 Sun Microsystems, Inc. * Portions Copyright 2015 ForgeRock AS. */ package org.forgerock.opendj.config; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.MissingResourceException; import java.util.NoSuchElementException; import java.util.Set; /** * This class is used to map configuration elements to their LDAP schema names. *
* It is possible to augment the core LDAP profile with additional profile * mappings at run-time using instances of {@link Wrapper}. This is useful for * unit tests which need to add and remove mock components. */ public final class LDAPProfile { /** * LDAP profile wrappers can be used to provide temporary LDAP profile * information for components which do not have LDAP profile property files. * These components are typically "mock" components used in unit-tests. */ public static abstract class Wrapper { /** Default constructor. */ protected Wrapper() { // No implementation required. } /** * Get the name of the LDAP attribute associated with the specified * property definition. *
* The default implementation of this method is to return
* null.
*
* @param d
* The managed object definition.
* @param pd
* The property definition.
* @return Returns the name of the LDAP attribute associated with the
* specified property definition, or null if the
* property definition is not handled by this LDAP profile
* wrapper.
*/
public String getAttributeName(AbstractManagedObjectDefinition, ?> d, PropertyDefinition> pd) {
return null;
}
/**
* Gets the LDAP RDN attribute type for child entries of an instantiable
* relation.
*
* The default implementation of this method is to return
* null.
*
* @param r
* The instantiable relation.
* @return Returns the LDAP RDN attribute type for child entries of an
* instantiable relation, or null if the
* instantiable relation is not handled by this LDAP profile
* wrapper.
*/
public String getRelationChildRDNType(InstantiableRelationDefinition, ?> r) {
return null;
}
/**
* Gets the LDAP RDN attribute type for child entries of an set
* relation.
*
* The default implementation of this method is to return
* null.
*
* @param r
* The set relation.
* @return Returns the LDAP RDN attribute type for child entries of an
* set relation, or null if the set relation is not
* handled by this LDAP profile wrapper.
*/
public String getRelationChildRDNType(SetRelationDefinition, ?> r) {
return null;
}
/**
* Get the principle object class associated with the specified
* definition.
*
* The default implementation of this method is to return
* null.
*
* @param d
* The managed object definition.
* @return Returns the principle object class associated with the
* specified definition, or null if the managed
* object definition is not handled by this LDAP profile
* wrapper.
*/
public String getObjectClass(AbstractManagedObjectDefinition, ?> d) {
return null;
}
/**
* Get an LDAP RDN sequence associatied with a relation.
*
* The default implementation of this method is to return
*
* The returned list is ordered such that the uppermost object classes
* appear first (e.g. top).
*
* @param d
* The managed object definition.
* @return Returns all the object classes associated with the specified
* definition.
* @throws MissingResourceException
* If the LDAP profile properties file associated with the
* provided managed object definition could not be loaded.
*/
public Listnull.
*
* @param r
* The relation.
* @return Returns the LDAP RDN sequence associatied with a relation, or
* null if the relation is not handled by this LDAP
* profile wrapper.
*/
public String getRelationRDNSequence(RelationDefinition, ?> r) {
return null;
}
}
/** The singleton instance. */
private static final LDAPProfile INSTANCE = new LDAPProfile();
/**
* Get the global LDAP profile instance.
*
* @return Returns the global LDAP profile instance.
*/
public static LDAPProfile getInstance() {
return INSTANCE;
}
/** The list of profile wrappers. */
private final LinkedList