From 04dfafe19f0d3687d0f0b3e51d2d5bf3d19b58bf Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 07 Mar 2007 23:38:55 +0000
Subject: [PATCH] Enable AspectJ weaving for the new debug logging framework: - This commit does not allow for configuring the debug logger over protocol. It can only be configured on server startup using properties. - The settings specified during startup will remain in effect for the duration of the server. - All messages are printed to standard out. - Weaving could be turned off with the -DDEBUG_BUILD=false property when building the server. - By default, the debug logger is off on server startup. It could be enabled by using the -Dorg.opends.server.debug.enabled=true. - Debug targets may be defined with the -Dorg.opends.server.debug.target property. The syntax of this property can be found on the opends.dev.java.net documentation section. - Debug logging is turned on by default on unit tests and printed on test failure.  - Default debug target for unit tests could be changed by using the -Dorg.opends.test.debug.target property.

---
 opends/src/server/org/opends/server/loggers/LogCategory.java |   46 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/loggers/LogCategory.java b/opends/src/server/org/opends/server/loggers/LogCategory.java
index e28fc76..df42e4e 100644
--- a/opends/src/server/org/opends/server/loggers/LogCategory.java
+++ b/opends/src/server/org/opends/server/loggers/LogCategory.java
@@ -26,12 +26,17 @@
  */
 package org.opends.server.loggers;
 
+import java.util.ArrayList;
+
 /**
  * The category class defines a set of standard logging types that
  * can be used to control logging output.
  */
-public abstract class LogCategory
+public class LogCategory
 {
+  private static ArrayList<LogCategory> known =  new ArrayList<LogCategory>();
+
+
   /**
    * The non-localized name of the type.
    */
@@ -42,13 +47,15 @@
    * <p>
    * Note that this constructor is "protected" to allow subclassing.
    *
-   * @param name  the name of the Level, for example "SEVERE".
+   * @param name  the name of the category, for example "MESSAGE".
    */
   protected LogCategory(String name) {
     if (name == null) {
       throw new NullPointerException();
     }
     this.name = name;
+
+    known.add(this);
   }
 
   /**
@@ -63,9 +70,42 @@
   /**
    * Retrieves the string reprentation of this log category.
    *
-   * @return the non-localized name of the Level, for example "INFO".
+   * @return the non-localized name of the LogCategory, for example "ENTRY".
    */
   public final String toString() {
     return name;
   }
+
+  /**
+   * Parse a category name string into a LogCategory.
+   * <p>
+   * For example:
+   * <ul>
+   * <li> "EXIT"
+   * <li> "caught"
+   * </ul>
+   * @param  name   string to be parsed
+   * @throws IllegalArgumentException if the value is not valid.
+   * Known names are the categories defined by this class or created
+   * by this class with appropriate package access, or new levels defined
+   * or created by subclasses.
+   *
+   * @return The parsed category
+   */
+  public static synchronized LogCategory parse(String name)
+      throws IllegalArgumentException {
+    // Check that name is not null.
+    name.length();
+
+    // Look for a known Level with the given  name.
+    for (int i = 0; i < known.size(); i++) {
+      LogCategory c = known.get(i);
+      if (name.equalsIgnoreCase(c.name)) {
+        return c;
+      }
+    }
+
+    // OK, we've tried everything and failed
+    throw new IllegalArgumentException("Bad category \"" + name + "\"");
+  }
 }

--
Gitblit v1.10.0