/*
|
* The contents of this file are subject to the terms of the Common Development and
|
* Distribution License (the License). You may not use this file except in compliance with the
|
* License.
|
*
|
* You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
|
* specific language governing permission and limitations under the License.
|
*
|
* When distributing Covered Software, include this CDDL Header Notice in each file and include
|
* the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
|
* Header, with the fields enclosed by brackets [] replaced by your own identifying
|
* information: "Portions Copyright [year] [name of copyright owner]".
|
*
|
* Copyright 2008-2009 Sun Microsystems, Inc.
|
* Portions Copyright 2014-2016 ForgeRock AS.
|
*/
|
package org.forgerock.opendj.config.client;
|
|
import java.util.Set;
|
import java.util.SortedSet;
|
|
import org.forgerock.opendj.config.AbstractManagedObjectDefinition;
|
import org.forgerock.opendj.config.Configuration;
|
import org.forgerock.opendj.config.ConfigurationClient;
|
import org.forgerock.opendj.config.DefinitionDecodingException;
|
import org.forgerock.opendj.config.InstantiableRelationDefinition;
|
import org.forgerock.opendj.config.ManagedObjectNotFoundException;
|
import org.forgerock.opendj.config.ManagedObjectPath;
|
import org.forgerock.opendj.config.OptionalRelationDefinition;
|
import org.forgerock.opendj.config.PropertyDefinition;
|
import org.forgerock.opendj.config.SetRelationDefinition;
|
import org.forgerock.opendj.config.client.spi.Driver;
|
import org.forgerock.opendj.ldap.LdapException;
|
import org.forgerock.opendj.server.config.client.RootCfgClient;
|
|
/** Driver based client management connection context. */
|
public abstract class DriverBasedManagementContext implements ManagementContext {
|
|
/** Creates a new management context. */
|
protected DriverBasedManagementContext() {
|
// No implementation required.
|
}
|
|
@Override
|
public final <C extends ConfigurationClient, S extends Configuration> boolean deleteManagedObject(
|
ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd, String name)
|
throws ManagedObjectNotFoundException, OperationRejectedException,
|
LdapException {
|
return getDriver().deleteManagedObject(parent, rd, name);
|
}
|
|
@Override
|
public final <C extends ConfigurationClient, S extends Configuration> boolean deleteManagedObject(
|
ManagedObjectPath<?, ?> parent, OptionalRelationDefinition<C, S> rd) throws
|
ManagedObjectNotFoundException, OperationRejectedException, LdapException {
|
return getDriver().deleteManagedObject(parent, rd);
|
}
|
|
@Override
|
public final <C extends ConfigurationClient, S extends Configuration> boolean deleteManagedObject(
|
ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd, String name)
|
throws ManagedObjectNotFoundException, OperationRejectedException, LdapException {
|
return getDriver().deleteManagedObject(parent, rd, name);
|
}
|
|
@Override
|
@SuppressWarnings("unchecked")
|
public final <C extends ConfigurationClient, S extends Configuration> ManagedObject<? extends C> getManagedObject(
|
ManagedObjectPath<C, S> path) throws DefinitionDecodingException, ManagedObjectDecodingException,
|
ManagedObjectNotFoundException, LdapException {
|
// Be careful to handle the root configuration.
|
if (path.isEmpty()) {
|
return (ManagedObject<C>) getRootConfigurationManagedObject();
|
}
|
|
return getDriver().getManagedObject(path);
|
}
|
|
@Override
|
public final <P> P getPropertyValue(ManagedObjectPath<?, ?> path, PropertyDefinition<P> pd)
|
throws DefinitionDecodingException, LdapException, ManagedObjectNotFoundException {
|
Set<P> values = getPropertyValues(path, pd);
|
if (values.isEmpty()) {
|
return null;
|
} else {
|
return values.iterator().next();
|
}
|
}
|
|
@Override
|
public final <P> SortedSet<P> getPropertyValues(ManagedObjectPath<?, ?> path, PropertyDefinition<P> pd)
|
throws DefinitionDecodingException, LdapException, ManagedObjectNotFoundException {
|
return getDriver().getPropertyValues(path, pd);
|
}
|
|
@Override
|
public final RootCfgClient getRootConfiguration() {
|
return getRootConfigurationManagedObject().getConfiguration();
|
}
|
|
@Override
|
public final ManagedObject<RootCfgClient> getRootConfigurationManagedObject() {
|
return getDriver().getRootConfigurationManagedObject();
|
}
|
|
@Override
|
public final <C extends ConfigurationClient, S extends Configuration> String[] listManagedObjects(
|
ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd) throws
|
ManagedObjectNotFoundException, LdapException {
|
return listManagedObjects(parent, rd, rd.getChildDefinition());
|
}
|
|
@Override
|
public final <C extends ConfigurationClient, S extends Configuration> String[] listManagedObjects(
|
ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd,
|
AbstractManagedObjectDefinition<? extends C, ? extends S> d) throws
|
ManagedObjectNotFoundException, LdapException {
|
return getDriver().listManagedObjects(parent, rd, d);
|
}
|
|
@Override
|
public final <C extends ConfigurationClient, S extends Configuration> String[] listManagedObjects(
|
ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd) throws
|
ManagedObjectNotFoundException, LdapException {
|
return getDriver().listManagedObjects(parent, rd, rd.getChildDefinition());
|
}
|
|
@Override
|
public final boolean managedObjectExists(ManagedObjectPath<?, ?> path) throws ManagedObjectNotFoundException,
|
LdapException {
|
return getDriver().managedObjectExists(path);
|
}
|
|
/**
|
* Gets the driver associated with this management context.
|
*
|
* @return Returns the driver associated with this management context.
|
*/
|
protected abstract Driver getDriver();
|
|
@Override
|
public final void close() {
|
getDriver().close();
|
}
|
|
}
|