From 83d7f7c8616aed2990ef07aefbe2fdf664e66408 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 17 Aug 2015 14:35:58 +0000
Subject: [PATCH] DatabaseEnvironmentMonitor.java: Remove class which has been moved to org.opends.server.backends.jeb

---
 /dev/null |  432 ------------------------------------------------------
 1 files changed, 0 insertions(+), 432 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/monitors/DatabaseEnvironmentMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
deleted file mode 100644
index 6bd04a6..0000000
--- a/opendj-server-legacy/src/main/java/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * 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 legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * 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 legal-notices/CDDLv1_0.txt.
- * 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 2006-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2014-2015 ForgeRock AS
- */
-package org.opends.server.monitors;
-
-
-
-import java.lang.reflect.Method;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.admin.std.server.MonitorProviderCfg;
-import org.forgerock.opendj.ldap.schema.Syntax;
-import org.opends.server.api.MonitorProvider;
-import org.opends.server.backends.jeb.DatabaseContainer;
-import org.opends.server.backends.jeb.EntryContainer;
-import org.opends.server.backends.jeb.Index;
-import org.opends.server.backends.jeb.RootContainer;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.opends.server.types.*;
-import com.sleepycat.je.DatabaseException;
-import com.sleepycat.je.EnvironmentStats;
-import com.sleepycat.je.JEVersion;
-import com.sleepycat.je.StatsConfig;
-import com.sleepycat.je.TransactionStats;
-import org.opends.server.util.TimeThread;
-
-
-/**
- * A monitor provider for a Berkeley DB JE environment.
- * It uses reflection on the environment statistics object
- * so that we don't need to keep a list of all the stats.
- */
-public class DatabaseEnvironmentMonitor
-       extends MonitorProvider<MonitorProviderCfg>
-{
-  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
-  /**
-   * Represents the statistical information kept for each search filter.
-   */
-  private static class FilterStats implements Comparable<FilterStats>
-  {
-    private volatile LocalizableMessage failureReason = LocalizableMessage.EMPTY;
-    private long maxMatchingEntries = -1;
-    private final AtomicInteger hits = new AtomicInteger();
-
-    public int compareTo(FilterStats that) {
-      return this.hits.get() - that.hits.get();
-    }
-
-    private void update(int hitCount, LocalizableMessage failureReason)
-    {
-      this.hits.getAndAdd(hitCount);
-      this.failureReason = failureReason;
-    }
-
-    private void update(int hitCount, long matchingEntries)
-    {
-      this.hits.getAndAdd(hitCount);
-      this.failureReason = LocalizableMessage.EMPTY;
-      synchronized(this)
-      {
-        if(matchingEntries > maxMatchingEntries)
-        {
-          maxMatchingEntries = matchingEntries;
-        }
-      }
-    }
-  }
-
-  /**
-   * The name of this monitor instance.
-   */
-  private String name;
-
-  /**
-   * The root container to be monitored.
-   */
-  private RootContainer rootContainer;
-
-  private int maxEntries = 1024;
-  private boolean filterUseEnabled;
-  private String startTimeStamp;
-  private final HashMap<SearchFilter, FilterStats> filterToStats = new HashMap<>();
-  private final AtomicInteger indexedSearchCount = new AtomicInteger();
-  private final AtomicInteger unindexedSearchCount = new AtomicInteger();
-
-  /**
-   * Creates a new database environment monitor.
-   * @param name The monitor instance name.
-   * @param rootContainer A root container handle for the database to be
-   * monitored.
-   */
-  public DatabaseEnvironmentMonitor(String name, RootContainer rootContainer)
-  {
-    this.name = name;
-    this.rootContainer = rootContainer;
-  }
-
-
-
-  /** {@inheritDoc} */
-  public void initializeMonitorProvider(MonitorProviderCfg configuration)
-       throws ConfigException, InitializationException
-  {
-  }
-
-  /**
-   * Retrieves the name of this monitor provider.  It should be unique among all
-   * monitor providers, including all instances of the same monitor provider.
-   *
-   * @return The name of this monitor provider.
-   */
-  public String getMonitorInstanceName()
-  {
-    return name;
-  }
-
-  /**
-   * Creates monitor attribute values for a given JE statistics object,
-   * using reflection to call all the getter methods of the statistics object.
-   * The attribute type names of the created attribute values are derived from
-   * the names of the getter methods.
-   * @param monitorAttrs The monitor attribute values are inserted into this
-   * attribute list.
-   * @param stats The JE statistics object.
-   * @param attrPrefix A common prefix for the attribute type names of the
-   * monitor attribute values, to distinguish the attributes of one
-   * type of statistical object from another, and to avoid attribute name
-   * collisions.
-   */
-  private void addAttributesForStatsObject(ArrayList<Attribute> monitorAttrs,
-                                           Object stats, String attrPrefix)
-  {
-    Class<?> c = stats.getClass();
-    Method[] methods = c.getMethods();
-
-    // Iterate through all the statistic class methods.
-    for (Method method : methods)
-    {
-      // Invoke all the getters returning integer values.
-      if (method.getName().startsWith("get"))
-      {
-        Class<?> returnType = method.getReturnType();
-        if (returnType.equals(int.class) || returnType.equals(long.class))
-        {
-          Syntax integerSyntax = DirectoryServer.getDefaultIntegerSyntax();
-
-          // Remove the 'get' from the method name and add the prefix.
-          String attrName = attrPrefix + method.getName().substring(3);
-
-          try
-          {
-            // Read the statistic.
-            Object statValue = method.invoke(stats);
-
-            // Create an attribute from the statistic.
-            AttributeType attrType =
-                 DirectoryServer.getDefaultAttributeType(attrName,
-                                                         integerSyntax);
-            monitorAttrs.add(Attributes.create(attrType, String
-                .valueOf(statValue)));
-
-          } catch (Exception e)
-          {
-            logger.traceException(e);
-          }
-        }
-      }
-    }
-  }
-
-  /**
-   * Retrieves a set of attributes containing monitor data that should be
-   * returned to the client if the corresponding monitor entry is requested.
-   *
-   * @return A set of attributes containing monitor data that should be
-   *         returned to the client if the corresponding monitor entry is
-   *         requested.
-   */
-  public ArrayList<Attribute> getMonitorData()
-  {
-    EnvironmentStats environmentStats = null;
-    TransactionStats transactionStats = null;
-    StatsConfig statsConfig = new StatsConfig();
-    ArrayList<Attribute> monitorAttrs = new ArrayList<>();
-
-    try
-    {
-      environmentStats = rootContainer.getEnvironmentStats(statsConfig);
-      transactionStats =
-          rootContainer.getEnvironmentTransactionStats(statsConfig);
-    } catch (DatabaseException e)
-    {
-      logger.traceException(e);
-      return monitorAttrs;
-    }
-
-    String jeVersion = JEVersion.CURRENT_VERSION.getVersionString();
-    AttributeType versionType =
-         DirectoryServer.getDefaultAttributeType("JEVersion");
-    monitorAttrs.add(Attributes.create(versionType, jeVersion));
-
-    addAttributesForStatsObject(monitorAttrs, environmentStats, "Environment");
-    addAttributesForStatsObject(monitorAttrs, transactionStats, "Transaction");
-
-    AttributeBuilder needReindex = new AttributeBuilder("need-reindex");
-    for(EntryContainer ec : rootContainer.getEntryContainers())
-    {
-      List<DatabaseContainer> databases = new ArrayList<>();
-      ec.listDatabases(databases);
-      for(DatabaseContainer dc : databases)
-      {
-        if(dc instanceof Index && !((Index)dc).isTrusted())
-        {
-          needReindex.add(dc.getName());
-        }
-      }
-    }
-    if(needReindex.size() > 0)
-    {
-      monitorAttrs.add(needReindex.toAttribute());
-    }
-
-    if(filterUseEnabled)
-    {
-      monitorAttrs.add(Attributes.create("filter-use-startTime",
-          startTimeStamp));
-      AttributeBuilder builder = new AttributeBuilder("filter-use");
-
-      StringBuilder stringBuilder = new StringBuilder();
-      synchronized(filterToStats)
-      {
-        for(Map.Entry<SearchFilter, FilterStats> entry :
-            filterToStats.entrySet())
-        {
-          entry.getKey().toString(stringBuilder);
-          stringBuilder.append(" hits:");
-          stringBuilder.append(entry.getValue().hits.get());
-          stringBuilder.append(" maxmatches:");
-          stringBuilder.append(entry.getValue().maxMatchingEntries);
-          stringBuilder.append(" message:");
-          stringBuilder.append(entry.getValue().failureReason);
-          builder.add(stringBuilder.toString());
-          stringBuilder.setLength(0);
-        }
-      }
-      monitorAttrs.add(builder.toAttribute());
-      monitorAttrs.add(Attributes.create("filter-use-indexed",
-          String.valueOf(indexedSearchCount.get())));
-      monitorAttrs.add(Attributes.create("filter-use-unindexed",
-          String.valueOf(unindexedSearchCount.get())));
-    }
-
-    return monitorAttrs;
-  }
-
-
-  /**
-   * Updates the index filter statistics with this latest search filter
-   * and the reason why an index was not used.
-   *
-   * @param searchFilter The search filter that was evaluated.
-   * @param failureMessage The reason why an index was not used.
-   */
-  public void updateStats(SearchFilter searchFilter, LocalizableMessage failureMessage)
-  {
-    if(!filterUseEnabled)
-    {
-      return;
-    }
-
-    FilterStats stats;
-    synchronized(filterToStats)
-    {
-      stats = filterToStats.get(searchFilter);
-
-
-      if(stats != null)
-      {
-        stats.update(1, failureMessage);
-      }
-      else
-      {
-        stats = new FilterStats();
-        stats.update(1, failureMessage);
-        removeLowestHit();
-        filterToStats.put(searchFilter, stats);
-      }
-    }
-  }
-
-  /**
-   * Updates the index filter statistics with this latest search filter
-   * and the number of entries matched by the index lookup.
-   *
-   * @param searchFilter The search filter that was evaluated.
-   * @param matchingEntries The number of entries matched by the successful
-   *                        index lookup.
-   */
-  public void updateStats(SearchFilter searchFilter, long matchingEntries)
-  {
-    if(!filterUseEnabled)
-    {
-      return;
-    }
-
-    FilterStats stats;
-    synchronized(filterToStats)
-    {
-      stats = filterToStats.get(searchFilter);
-
-
-      if(stats != null)
-      {
-        stats.update(1, matchingEntries);
-      }
-      else
-      {
-        stats = new FilterStats();
-        stats.update(1, matchingEntries);
-        removeLowestHit();
-        filterToStats.put(searchFilter, stats);
-      }
-    }
-  }
-
-  /**
-   * Enable or disable index filter statistics gathering.
-   *
-   * @param enabled <code>true></code> to enable index filter statics gathering.
-   */
-  public void enableFilterUseStats(boolean enabled)
-  {
-    if(enabled && !filterUseEnabled)
-    {
-      startTimeStamp = TimeThread.getGMTTime();
-      indexedSearchCount.set(0);
-      unindexedSearchCount.set(0);
-    }
-    else if(!enabled)
-    {
-      filterToStats.clear();
-    }
-    filterUseEnabled = enabled;
-  }
-
-  /**
-   * Indicates if index filter statistics gathering is enabled.
-   *
-   * @return <code>true</code> If index filter statistics gathering is enabled.
-   */
-  public boolean isFilterUseEnabled()
-  {
-    return filterUseEnabled;
-  }
-
-  /**
-   * Sets the maximum number of search filters statistics entries to keep
-   * before ones with the least hits will be removed.
-   *
-   * @param maxEntries The maximum number of search filters statistics
-   * entries to keep
-   */
-  public void setMaxEntries(int maxEntries) {
-    this.maxEntries = maxEntries;
-  }
-
-  /**
-   * Updates the statistics counter to include an indexed search.
-   */
-  public void updateIndexedSearchCount()
-  {
-    indexedSearchCount.getAndIncrement();
-  }
-
-  /**
-   * Updates the statistics counter to include an unindexed search.
-   */
-  public void updateUnindexedSearchCount()
-  {
-    unindexedSearchCount.getAndIncrement();
-  }
-
-  private void removeLowestHit()
-  {
-    while(!filterToStats.isEmpty() && filterToStats.size() > maxEntries)
-    {
-      Iterator<Map.Entry<SearchFilter, FilterStats>> i =
-          filterToStats.entrySet().iterator();
-      Map.Entry<SearchFilter, FilterStats> lowest = i.next();
-      Map.Entry<SearchFilter, FilterStats> entry;
-      while(lowest.getValue().hits.get() > 1 && i.hasNext())
-      {
-        entry = i.next();
-        if(entry.getValue().hits.get() < lowest.getValue().hits.get())
-        {
-          lowest = entry;
-        }
-      }
-
-      filterToStats.remove(lowest.getKey());
-    }
-  }
-}

--
Gitblit v1.10.0