    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package org.apache.log4j.util;
    19
    20  import org.apache.oro.text.perl.Perl5Util;
    21
    22  /**
    23   * The sun.reflect.* and java.lang.reflect.* lines are not present in all JDKs.
    24   *
    25   * @author Ceki Gulcu
    26   */
    27  public class SunReflectFilter implements Filter {
    28    Perl5Util util = new Perl5Util();
    29
    30    public String filter(String in) {
    31      if(in == null) {
    32        return null;
    33      }
    34      if (util.match("/at sun.reflect/", in)) {
    35        return null;
    36      }
    37      if (in.indexOf("at java.lang.reflect.") >= 0) {
    38        return null;
    39      }
    40      if (in.indexOf("Compiled Code") >= 0) {
    41          if(in.indexOf("junit.framework.TestSuite") >= 0) {
    42              return util.substitute("s/Compiled Code/TestSuite.java:XXX/", in);
    43          }
    44      }
    45      if (util.match("/\\(Method.java:.*\\)/", in)) {
    46        return util.substitute("s/\\(Method.java:.*\\)/(Native Method)/", in);
    47      }
    48      return in;
    49    }
    50  }