/* * 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 2008-2009 Sun Microsystems, Inc. */ package org.opends.server.admin; 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