/* * 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 * * * Portions Copyright 2007 Sun Microsystems, Inc. */ package org.opends.admin.ads; import java.util.SortedSet; import javax.naming.ldap.InitialLdapContext; import org.opends.server.admin.ManagedObjectNotFoundException; import org.opends.server.admin.client.ManagementContext; import org.opends.server.admin.client.ldap.JNDIDirContextAdaptor; import org.opends.server.admin.client.ldap.LDAPManagementContext; import org.opends.server.admin.std.client.*; import org.opends.server.types.DN; /** * This is the only class in the org.opends.admin.ads package that uses the * classes from OpenDS.jar (in particular the administration client framework * API). Before calling this class OpenDS.jar must be * loaded. The goal is basically to centralize in one single place the * dependencies of this package on OpenDS.jar. This is done in order the * QuickSetup code to be able to use some of the functionalities provided * by the ADSContext classes before OpenDS.jar is downloaded. */ public class ADSContextHelper { /** * Default constructor. */ public ADSContextHelper() { } /** * Removes the administration suffix. * @param ctx the DirContext to be used. * @param backendName the name of the backend where the administration * suffix is stored. * @throws ADSContextException if the administration suffix could not be * removed. */ public void removeAdministrationSuffix(InitialLdapContext ctx, String backendName) throws ADSContextException { try { ManagementContext mCtx = LDAPManagementContext.createFromContext( JNDIDirContextAdaptor.adapt(ctx)); RootCfgClient root = mCtx.getRootConfiguration(); BackendCfgClient backend = null; try { backend = root.getBackend(backendName); } catch (ManagedObjectNotFoundException monfe) { // It does not exist. } if (backend != null) { SortedSet suffixes = backend.getBaseDN(); if (suffixes != null) { if (suffixes.remove( DN.decode(ADSContext.getAdministrationSuffixDN()))) { if (suffixes.size() > 0) { backend.setBaseDN(suffixes); backend.commit(); } else { root.removeBackend(backendName); } } } } } catch (Throwable t) { throw new ADSContextException( ADSContextException.ErrorType.ERROR_UNEXPECTED, t); } } /** * Creates the Administration Suffix. * @param ctx the DirContext to be used. * @param backendName the name of the backend where the administration * suffix is stored. * @param dbDirectory the path of the backend where the administration * suffix is stored (will be used if the backend must be created). * @param importTempDirectory the path of the backend where the temporary * files of import are stored (will be used if the backend must be created). * @throws ADSContextException if the administration suffix could not be * created. */ // public void createAdministrationSuffix(InitialLdapContext ctx, // String backendName, String dbDirectory, String importTempDirectory) // throws ADSContextException // { // try // { // ManagementContext mCtx = LDAPManagementContext.createFromContext( // JNDIDirContextAdaptor.adapt(ctx)); // RootCfgClient root = mCtx.getRootConfiguration(); // JEBackendCfgClient backend = null; // try // { // backend = (JEBackendCfgClient)root.getBackend(backendName); // } // catch (ManagedObjectNotFoundException e) // { // } // catch (ClassCastException cce) // { // throw new ADSContextException( // ADSContextException.ErrorType.UNEXPECTED_ADS_BACKEND_TYPE, cce); // } // if (backend == null) // { // JEBackendCfgDefn provider = JEBackendCfgDefn.getInstance(); // backend = root.createBackend(provider, backendName, null); // backend.setBackendEnabled(true); // backend.setBackendId(backendName); // backend.setBackendDirectory(dbDirectory); // backend.setBackendImportTempDirectory(importTempDirectory); // backend.setBackendWritabilityMode( // BackendCfgDefn.BackendWritabilityMode.ENABLED); // } // SortedSet suffixes = backend.getBackendBaseDN(); // if (suffixes == null) // { // suffixes = new TreeSet(); // } // suffixes.add(DN.decode(ADSContext.getAdministrationSuffixDN())); // backend.setBackendBaseDN(suffixes); // backend.commit(); // } // catch (Throwable t) // { // throw new ADSContextException( // ADSContextException.ErrorType.ERROR_UNEXPECTED, t); // } // } }