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

Ludovic Poitou
04.16.2011 cbfb986e90545c1d5b3508ba3c06d7d59fe7ad40
Fix OPENDJ-252. Control Panel fails with a Null Pointer Exception with JDK7.
Thanks to jvergara who provided a quick fix to OpenDS.
4 files modified
84 ■■■■■ changed files
opends/src/guitools/org/opends/guitools/controlpanel/datamodel/BackendDescriptor.java 43 ●●●●● patch | view | raw | blame | history
opends/src/guitools/org/opends/guitools/controlpanel/datamodel/BaseDNDescriptor.java 21 ●●●● patch | view | raw | blame | history
opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java 10 ●●●● patch | view | raw | blame | history
opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java 10 ●●●● patch | view | raw | blame | history
opends/src/guitools/org/opends/guitools/controlpanel/datamodel/BackendDescriptor.java
@@ -22,13 +22,14 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008 Sun Microsystems, Inc.
 *      Copyright 2008-2011 Sun Microsystems, Inc.
 */
package org.opends.guitools.controlpanel.datamodel;
import java.util.Collections;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import org.opends.admin.ads.ADSContext;
@@ -38,15 +39,15 @@
 */
public class BackendDescriptor
{
  private String backendID;
  private final String backendID;
  private SortedSet<BaseDNDescriptor> baseDns;
  private SortedSet<IndexDescriptor> indexes;
  private SortedSet<VLVIndexDescriptor> vlvIndexes;
  private int entries;
  private boolean isConfigBackend;
  private boolean isEnabled;
  private final boolean isConfigBackend;
  private final boolean isEnabled;
  private CustomSearchResult monitoringEntry;
  private Type type;
  private final Type type;
  private int hashCode;
  /**
@@ -95,20 +96,17 @@
   * @param type the type of the backend.
   */
  public BackendDescriptor(String backendID,
      SortedSet<BaseDNDescriptor> baseDns,
      SortedSet<IndexDescriptor> indexes,
      SortedSet<VLVIndexDescriptor> vlvIndexes,
      Set<BaseDNDescriptor> baseDns,
      Set<IndexDescriptor> indexes,
      Set<VLVIndexDescriptor> vlvIndexes,
      int entries, boolean isEnabled, Type type)
  {
    this.backendID = backendID;
    this.baseDns = Collections.unmodifiableSortedSet(baseDns);
    this.indexes = Collections.unmodifiableSortedSet(indexes);
    this.vlvIndexes = Collections.unmodifiableSortedSet(vlvIndexes);
    this.entries = entries;
    isConfigBackend = isConfigBackend(backendID);
    this.type = type;
    this.isEnabled = isEnabled;
    updateBaseDnsAndIndexes();
    updateBaseDnsAndIndexes(baseDns, indexes, vlvIndexes);
    recalculateHashCode();
  }
@@ -162,6 +160,7 @@
  /**
   * {@inheritDoc}
   */
  @Override
  public boolean equals(Object v)
  {
    boolean equals = false;
@@ -221,6 +220,7 @@
  /**
   * {@inheritDoc}
   */
  @Override
  public int hashCode()
  {
    return hashCode;
@@ -252,23 +252,32 @@
  /**
   * Updates the base DNs and indexes contained in this backend so that they
   * have a reference to this backend.
   * have a reference to this backend.  It also initialize the members of this
   * class with the base DNs and indexes.
   * @param baseDns the base DNs associated with the Backend.
   * @param indexes the indexes defined in the backend.
   * @param vlvIndexes the VLV indexes defined in the backend.
   *
   */
  private void updateBaseDnsAndIndexes()
  private void updateBaseDnsAndIndexes(Set<BaseDNDescriptor> baseDns,
      Set<IndexDescriptor> indexes,
      Set<VLVIndexDescriptor> vlvIndexes)
  {
    for (BaseDNDescriptor baseDN : baseDns)
    {
      baseDN.setBackend(this);
    }
    for (AbstractIndexDescriptor index : indexes)
    this.baseDns = new TreeSet<BaseDNDescriptor>(baseDns);
    for (IndexDescriptor index : indexes)
    {
      index.setBackend(this);
    }
    for (AbstractIndexDescriptor index : vlvIndexes)
    this.indexes = new TreeSet<IndexDescriptor>(indexes);
    for (VLVIndexDescriptor index : vlvIndexes)
    {
      index.setBackend(this);
    }
    this.vlvIndexes = new TreeSet<VLVIndexDescriptor>(vlvIndexes);
  }
  /**
opends/src/guitools/org/opends/guitools/controlpanel/datamodel/BaseDNDescriptor.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Copyright 2008-2011 Sun Microsystems, Inc.
 *      Portions Copyright 2011 ForgeRock AS
 */
@@ -58,7 +58,7 @@
  private BackendDescriptor backend;
  private long ageOfOldestMissingChange;
  private Type type;
  private DN baseDn;
  private final DN baseDn;
  private int replicaID = -1;
  private int hashCode;
@@ -100,6 +100,7 @@
  /**
   * {@inheritDoc}
   */
  @Override
  public boolean equals(Object v)
  {
    boolean equals = false;
@@ -112,9 +113,16 @@
        getDn().equals(desc.getDn()) &&
        (getAgeOfOldestMissingChange() == desc.getAgeOfOldestMissingChange()) &&
        (getMissingChanges() == desc.getMissingChanges()) &&
        getBackend().getBackendID().equals(
            desc.getBackend().getBackendID()) &&
        (getEntries() == desc.getEntries());
        if (equals)
        {
          if ((getBackend() != null) && (desc.getBackend() != null))
          {
            // Only compare the backend IDs.  In this context is enough
            equals = getBackend().getBackendID().equals(
                desc.getBackend().getBackendID());
          }
        }
      }
    }
    else
@@ -127,6 +135,7 @@
  /**
   * {@inheritDoc}
   */
  @Override
  public int hashCode()
  {
    return hashCode;
@@ -145,9 +154,13 @@
    }
    if (returnValue == 0)
    {
      if ((getBackend() != null) && (desc.getBackend() != null))
      {
        // Only compare the backend IDs. In this context is enough
      returnValue = getBackend().getBackendID().compareTo(
          desc.getBackend().getBackendID());
    }
    }
    if (returnValue == 0)
    {
      returnValue = compare(getEntries(), desc.getEntries());
opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromDirContext.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Copyright 2008-2011 Sun Microsystems, Inc.
 */
package org.opends.guitools.controlpanel.util;
@@ -310,7 +310,7 @@
        try
        {
          BackendCfgClient backend = root.getBackend(backendNames[i]);
          SortedSet<BaseDNDescriptor> baseDNs = new TreeSet<BaseDNDescriptor>();
          Set<BaseDNDescriptor> baseDNs = new HashSet<BaseDNDescriptor>();
          for (DN dn : backend.getBaseDN())
          {
            BaseDNDescriptor baseDN =
@@ -318,9 +318,9 @@
                  null, -1, -1, -1);
            baseDNs.add(baseDN);
          }
          SortedSet<IndexDescriptor> indexes = new TreeSet<IndexDescriptor>();
          SortedSet<VLVIndexDescriptor> vlvIndexes =
            new TreeSet<VLVIndexDescriptor>();
          Set<IndexDescriptor> indexes = new HashSet<IndexDescriptor>();
          Set<VLVIndexDescriptor> vlvIndexes =
            new HashSet<VLVIndexDescriptor>();
          BackendDescriptor.Type type;
          if (backend instanceof LocalDBBackendCfgClient)
          {
opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Copyright 2008-2011 Sun Microsystems, Inc.
 */
package org.opends.guitools.controlpanel.util;
@@ -165,7 +165,7 @@
        try
        {
          BackendCfg backend = root.getBackend(backendNames[i]);
          SortedSet<BaseDNDescriptor> baseDNs = new TreeSet<BaseDNDescriptor>();
          Set<BaseDNDescriptor> baseDNs = new HashSet<BaseDNDescriptor>();
          for (DN dn : backend.getBaseDN())
          {
            BaseDNDescriptor baseDN =
@@ -173,9 +173,9 @@
                  null, -1, -1, -1);
            baseDNs.add(baseDN);
          }
          SortedSet<IndexDescriptor> indexes = new TreeSet<IndexDescriptor>();
          SortedSet<VLVIndexDescriptor> vlvIndexes =
            new TreeSet<VLVIndexDescriptor>();
          Set<IndexDescriptor> indexes = new HashSet<IndexDescriptor>();
          Set<VLVIndexDescriptor> vlvIndexes =
            new HashSet<VLVIndexDescriptor>();
          BackendDescriptor.Type type;
          if (backend instanceof LocalDBBackendCfg)
          {