View Javadoc

    1   /*
    2    * Copyright 2009 Red Hat, Inc.
    3    *
    4    * Red Hat licenses this file to you under the Apache License, version 2.0
    5    * (the "License"); you may not use this file except in compliance with the
    6    * License.  You may obtain a copy of the License at:
    7    *
    8    *    http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
    13   * License for the specific language governing permissions and limitations
    14   * under the License.
    15   */
    16  package org.jboss.netty.util;
    17
    18  import org.jboss.netty.channel.ChannelPipeline;
    19  import org.jboss.netty.channel.ChannelSink;
    20  import org.jboss.netty.util.internal.SystemPropertyUtil;
    21
    22  /**
    23   * Determines if Netty is running in a debug mode or not.  Please note that
    24   * this is not a Java debug mode.  You can enable Netty debug mode by
    25   * specifying the {@code "org.jboss.netty.debug"} system property (e.g.
    26   * {@code java -Dorg.jboss.netty.debug ...})
    27   * <p>
    28   * If debug mode is disabled (default), the stack trace of the exceptions are
    29   * compressed to help debugging a user application.
    30   * <p>
    31   * If debug mode is enabled, the stack trace of the exceptions raised in
    32   * {@link ChannelPipeline} or {@link ChannelSink} are retained as it is to help
    33   * debugging Netty.
    34   *
    35   * @author <a href="http://www.jboss.org/netty/">The Netty Project</a>
    36   * @author <a href="http://gleamynode.net/">Trustin Lee</a>
    37   *
    38   * @version $Rev: 2080 $, $Date: 2010-01-26 18:04:19 +0900 (Tue, 26 Jan 2010) $
    39   */
    40  public class DebugUtil {
    41
    42      /**
    43       * Returns {@code true} if and only if Netty debug mode is enabled.
    44       */
    45      public static boolean isDebugEnabled() {
    46          String value;
    47          try {
    48              value = SystemPropertyUtil.get("org.jboss.netty.debug");
    49          } catch (Exception e) {
    50              value = null;
    51          }
    52
    53          if (value == null) {
    54              return false;
    55          }
    56
    57          value = value.trim().toUpperCase();
    58          return !value.startsWith("N") &&
    59                 !value.startsWith("F") &&
    60                 !value.equals("0");
    61      }
    62
    63      private DebugUtil() {
    64          // Unused
    65      }
    66  }