mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Gaetan Boismal
17.54.2015 3183024b2a87ba76c47800ddfa312f0edbe3911b
OPENDJ-1929 Add UI pluggable backend indexes view

CR-6632
* org.opends.guitools.controlpanel.datamodel.BackendDescriptor.java
** Add PLUGGABLE as backend type
* org.opends.guitools.controlpanel.util.ConfigFromDirContext.java
** Add the logic to read index definitions from a pluggable backend
* org.opends.guitools.controlpanel.util.ConfigFromFile.java
** Add the logic to read index definitions from a pluggable backend
3 files modified
164 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/BackendDescriptor.java 2 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java 87 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromFile.java 75 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/BackendDescriptor.java
@@ -61,6 +61,8 @@
    MONITOR,
    /** The backend is another type of backend (for instance user defined). */
    OTHER,
    /** The backend is pluggable. */
    PLUGGABLE,
    /** The backend is a task backend. */
    TASK
  }
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java
@@ -72,6 +72,8 @@
import org.opends.server.admin.client.ldap.LDAPManagementContext;
import org.opends.server.admin.std.client.AdministrationConnectorCfgClient;
import org.opends.server.admin.std.client.BackendCfgClient;
import org.opends.server.admin.std.client.BackendIndexCfgClient;
import org.opends.server.admin.std.client.BackendVLVIndexCfgClient;
import org.opends.server.admin.std.client.BackupBackendCfgClient;
import org.opends.server.admin.std.client.ConnectionHandlerCfgClient;
import org.opends.server.admin.std.client.HTTPConnectionHandlerCfgClient;
@@ -84,6 +86,7 @@
import org.opends.server.admin.std.client.LocalDBVLVIndexCfgClient;
import org.opends.server.admin.std.client.MemoryBackendCfgClient;
import org.opends.server.admin.std.client.MonitorBackendCfgClient;
import org.opends.server.admin.std.client.PluggableBackendCfgClient;
import org.opends.server.admin.std.client.ReplicationDomainCfgClient;
import org.opends.server.admin.std.client.ReplicationServerCfgClient;
import org.opends.server.admin.std.client.ReplicationSynchronizationProviderCfgClient;
@@ -92,6 +95,7 @@
import org.opends.server.admin.std.client.RootDNUserCfgClient;
import org.opends.server.admin.std.client.SNMPConnectionHandlerCfgClient;
import org.opends.server.admin.std.client.TaskBackendCfgClient;
import org.opends.server.backends.pluggable.SuffixContainer;
import org.opends.server.config.ConfigConstants;
import org.opends.server.core.DirectoryServer;
import org.opends.server.tools.tasks.TaskEntry;
@@ -423,6 +427,11 @@
          type = BackendDescriptor.Type.LOCAL_DB;
          refreshLocalDBBackendConfig(indexes, vlvIndexes, backend, errors);
        }
        else if (backend instanceof PluggableBackendCfgClient)
        {
          type = BackendDescriptor.Type.PLUGGABLE;
          refreshBackendConfig(indexes, vlvIndexes, backend, errors);
        }
        else if (backend instanceof LDIFBackendCfgClient)
        {
          type = BackendDescriptor.Type.LDIF;
@@ -471,15 +480,70 @@
    }
  }
  private void refreshBackendConfig(final Set<IndexDescriptor> indexes,
      final Set<VLVIndexDescriptor> vlvIndexes, final BackendCfgClient backend, final List<OpenDsException> errors)
  {
    final PluggableBackendCfgClient db = (PluggableBackendCfgClient) backend;
    readBackendIndexes(indexes, errors, db);
    readBackendVLVIndexes(vlvIndexes, errors, db);
  }
  private void readBackendIndexes(final Set<IndexDescriptor> indexes, final List<OpenDsException> errors,
      final PluggableBackendCfgClient db)
  {
    indexes.add(new IndexDescriptor(
        SuffixContainer.DN2ID_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    // FIXME: Remove the two following indexes when they will be deleted
    indexes.add(new IndexDescriptor(
        SuffixContainer.ID2CHILDREN_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    indexes.add(new IndexDescriptor(
        SuffixContainer.ID2SUBTREE_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    try
    {
      for (final String indexName : db.listBackendIndexes())
      {
        final BackendIndexCfgClient index = db.getBackendIndex(indexName);
        indexes.add(new IndexDescriptor(
            index.getAttribute().getNameOrOID(), index.getAttribute(),
            null, IndexTypeDescriptor.fromBackendIndexTypes(index.getIndexType()), index.getIndexEntryLimit()));
      }
    }
    catch (OpenDsException oe)
    {
      errors.add(oe);
    }
  }
  private void readBackendVLVIndexes(final Set<VLVIndexDescriptor> vlvIndexes,
      final List<OpenDsException> errors, final PluggableBackendCfgClient db)
  {
    try
    {
      for (final String vlvIndexName : db.listBackendVLVIndexes())
      {
        final BackendVLVIndexCfgClient index = db.getBackendVLVIndex(vlvIndexName);
        final List<VLVSortOrder> sortOrder = getVLVSortOrder(index.getSortOrder());
        vlvIndexes.add(new VLVIndexDescriptor(
            index.getName(), null, index.getBaseDN(), VLVIndexDescriptor.toSearchScope(index.getScope()),
            index.getFilter(), sortOrder));
      }
    }
    catch (OpenDsException oe)
    {
      errors.add(oe);
    }
  }
  // FIXME: Remove once local-db backend will be pluggable.
  private void refreshLocalDBBackendConfig(final Set<IndexDescriptor> indexes,
      final Set<VLVIndexDescriptor> vlvIndexes, final BackendCfgClient backend, final List<OpenDsException> errors)
  {
    LocalDBBackendCfgClient db = (LocalDBBackendCfgClient)backend;
    LocalDBBackendCfgClient localDBBackend = (LocalDBBackendCfgClient)backend;
    try
    {
      for (String indexName : db.listLocalDBIndexes())
      for (String indexName : localDBBackend.listLocalDBIndexes())
      {
        LocalDBIndexCfgClient index = db.getLocalDBIndex(indexName);
        LocalDBIndexCfgClient index = localDBBackend.getLocalDBIndex(indexName);
        indexes.add(new IndexDescriptor(
            index.getAttribute().getNameOrOID(), index.getAttribute(),
            null, IndexTypeDescriptor.fromLocalDBIndexTypes(index.getIndexType()), index.getIndexEntryLimit()));
@@ -489,15 +553,22 @@
    {
      errors.add(oe);
    }
    indexes.add(new IndexDescriptor("dn2id", null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    indexes.add(new IndexDescriptor("id2children", null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    indexes.add(new IndexDescriptor("id2subtree", null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    indexes.add(new IndexDescriptor(
        SuffixContainer.DN2ID_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    if (localDBBackend.isSubordinateIndexesEnabled())
    {
      indexes.add(new IndexDescriptor(
          SuffixContainer.ID2CHILDREN_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
      indexes.add(new IndexDescriptor(
          SuffixContainer.ID2SUBTREE_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    }
    try
    {
      for (String vlvIndexName : db.listLocalDBVLVIndexes())
      for (String vlvIndexName : localDBBackend.listLocalDBVLVIndexes())
      {
        LocalDBVLVIndexCfgClient index = db.getLocalDBVLVIndex(vlvIndexName);
        LocalDBVLVIndexCfgClient index = localDBBackend.getLocalDBVLVIndex(vlvIndexName);
        String s = index.getSortOrder();
        List<VLVSortOrder> sortOrder = getVLVSortOrder(s);
        vlvIndexes.add(new VLVIndexDescriptor(
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ConfigFromFile.java
@@ -55,6 +55,8 @@
import org.opends.server.admin.server.ServerManagementContext;
import org.opends.server.admin.std.server.AdministrationConnectorCfg;
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.admin.std.server.BackendIndexCfg;
import org.opends.server.admin.std.server.BackendVLVIndexCfg;
import org.opends.server.admin.std.server.BackupBackendCfg;
import org.opends.server.admin.std.server.ConnectionHandlerCfg;
import org.opends.server.admin.std.server.CryptoManagerCfg;
@@ -68,6 +70,7 @@
import org.opends.server.admin.std.server.LocalDBVLVIndexCfg;
import org.opends.server.admin.std.server.MemoryBackendCfg;
import org.opends.server.admin.std.server.MonitorBackendCfg;
import org.opends.server.admin.std.server.PluggableBackendCfg;
import org.opends.server.admin.std.server.ReplicationDomainCfg;
import org.opends.server.admin.std.server.ReplicationServerCfg;
import org.opends.server.admin.std.server.ReplicationSynchronizationProviderCfg;
@@ -76,6 +79,7 @@
import org.opends.server.admin.std.server.RootDNUserCfg;
import org.opends.server.admin.std.server.SNMPConnectionHandlerCfg;
import org.opends.server.admin.std.server.TaskBackendCfg;
import org.opends.server.backends.pluggable.SuffixContainer;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.DN;
import org.opends.server.types.OpenDsException;
@@ -244,9 +248,15 @@
          {
            errors.add(toConfigException(ce));
          }
          indexes.add(new IndexDescriptor("dn2id", null, null, new TreeSet<IndexTypeDescriptor>(), -1));
          indexes.add(new IndexDescriptor("id2children", null, null, new TreeSet<IndexTypeDescriptor>(), -1));
          indexes.add(new IndexDescriptor("id2subtree", null, null, new TreeSet<IndexTypeDescriptor>(), -1));
          indexes.add(new IndexDescriptor(
              SuffixContainer.DN2ID_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
          if (db.isSubordinateIndexesEnabled())
          {
            indexes.add(new IndexDescriptor(
                SuffixContainer.ID2CHILDREN_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
            indexes.add(new IndexDescriptor(
                SuffixContainer.ID2SUBTREE_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
          }
          try
          {
@@ -265,6 +275,11 @@
            errors.add(toConfigException(ce));
          }
        }
        else if (backend instanceof PluggableBackendCfg)
        {
          type = BackendDescriptor.Type.PLUGGABLE;
          refreshBackendConfig(indexes, vlvIndexes, backend, errors);
        }
        else if (backend instanceof LDIFBackendCfg)
        {
          type = BackendDescriptor.Type.LDIF;
@@ -309,6 +324,60 @@
    }
  }
  private void refreshBackendConfig(final Set<IndexDescriptor> indexes,
      final Set<VLVIndexDescriptor> vlvIndexes, final BackendCfg backend, final List<OpenDsException> errors)
  {
    final PluggableBackendCfg db = (PluggableBackendCfg) backend;
    readBackendIndexes(indexes, errors, db);
    readBackendVLVIndexes(vlvIndexes, errors, db);
  }
  private void readBackendIndexes(final Set<IndexDescriptor> indexes, final List<OpenDsException> errors,
      final PluggableBackendCfg db)
  {
    indexes.add(new IndexDescriptor(
        SuffixContainer.DN2ID_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    // FIXME: Remove the two following indexes when they will be deleted
    indexes.add(new IndexDescriptor(
        SuffixContainer.ID2CHILDREN_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    indexes.add(new IndexDescriptor(
        SuffixContainer.ID2SUBTREE_INDEX_NAME, null, null, new TreeSet<IndexTypeDescriptor>(), -1));
    try
    {
      for (final String indexName : db.listBackendIndexes())
      {
        final BackendIndexCfg index = db.getBackendIndex(indexName);
        indexes.add(new IndexDescriptor(
            index.getAttribute().getNameOrOID(), index.getAttribute(),
            null, IndexTypeDescriptor.fromBackendIndexTypes(index.getIndexType()), index.getIndexEntryLimit()));
      }
    }
    catch (ConfigException ce)
    {
      errors.add(toConfigException(ce));
    }
  }
  private void readBackendVLVIndexes(final Set<VLVIndexDescriptor> vlvIndexes,
      final List<OpenDsException> errors, final PluggableBackendCfg db)
  {
    try
    {
      for (final String vlvIndexName : db.listBackendVLVIndexes())
      {
        final BackendVLVIndexCfg index = db.getBackendVLVIndex(vlvIndexName);
        final List<VLVSortOrder> sortOrder = getVLVSortOrder(index.getSortOrder());
        vlvIndexes.add(new VLVIndexDescriptor(
            index.getName(), null, index.getBaseDN(), VLVIndexDescriptor.toSearchScope(index.getScope()),
            index.getFilter(), sortOrder));
      }
    }
    catch (ConfigException ce)
    {
      errors.add(toConfigException(ce));
    }
  }
  private boolean readIfReplicationIsSecure(final RootCfg root, final List<OpenDsException> errors)
  {
    boolean isReplicationSecure = false;