Coverage Report - th.co.edge.jseq.MethodFilter
 
Classes in this File Line Coverage Branch Coverage Complexity
MethodFilter
100%
7/7
100%
4/4
1
 
 1  
 /*
 2  
  * Copyright (c) 2003-2008, by Henrik Arro and Contributors
 3  
  *
 4  
  * This file is part of JSeq, a tool to automatically create
 5  
  * sequence diagrams by tracing program execution.
 6  
  *
 7  
  * See <http://jseq.sourceforge.net> for more information.
 8  
  *
 9  
  * JSeq is free software: you can redistribute it and/or modify
 10  
  * it under the terms of the GNU Lesser General Public License as
 11  
  * published by the Free Software Foundation, either version 3 of
 12  
  * the License, or (at your option) any later version.
 13  
  *
 14  
  * JSeq is distributed in the hope that it will be useful,
 15  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 16  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 17  
  * GNU Lesser General Public License for more details.
 18  
  *
 19  
  * You should have received a copy of the GNU Lesser General Public License
 20  
  * along with JSeq. If not, see <http://www.gnu.org/licenses/>.
 21  
  */
 22  
 
 23  
 package th.co.edge.jseq;
 24  
 
 25  
 /**
 26  
  * A <code>Filter</code> that accepts only methods with a given fully
 27  
  * qualified name.
 28  
  */
 29  
 public class MethodFilter implements ActivationList.Filter {
 30  
     private final String className;
 31  
     private final String methodName;
 32  
 
 33  
     /**
 34  
      * Creates a new <code>MethodFilter</code> that only accepts methods with
 35  
      * the given fully qualified name. Only exact matches are accepted, there is
 36  
      * no wild-card expansion.
 37  
      *
 38  
      * @param method
 39  
      *            the fully qualified method name to accept
 40  
      */
 41  3
     public MethodFilter(String method) {
 42  3
         this.className = method.substring(0, method.lastIndexOf("."));
 43  3
         this.methodName = method.substring(method.lastIndexOf(".") + 1);
 44  3
     }
 45  
 
 46  
     /**
 47  
      * Returns <code>true</code> if and only if the given activation is a call
 48  
      * to a method with the fully qualified name given when creating this
 49  
      * <code>MethodFilter</code>.
 50  
      *
 51  
      * @param activation
 52  
      *            the <code>Activation</code> to check
 53  
      *
 54  
      * @return <code>true</code> if <code>activation</code> represents a
 55  
      *         call to a method with the name associated with this
 56  
      *         <code>MethodFilter</code>, <code>false</code> otherwise
 57  
      */
 58  
     public boolean accept(Activation activation) {
 59  7
         return activation.getClassName().equals(className)
 60  
                 && activation.getMethod().name().equals(methodName);
 61  
     }
 62  
 
 63  
     /**
 64  
      * Returns the class name associated with this <code>MethodFilter</code>.
 65  
      *
 66  
      * @return the class name associated with this <code>MethodFilter</code>
 67  
      */
 68  
     public String getClassName() {
 69  1
         return className;
 70  
     }
 71  
 
 72  
     /**
 73  
      * Returns the unqualified method name associated with this
 74  
      * <code>MethodFilter</code>.
 75  
      *
 76  
      * @return the unqualified method name associated with this
 77  
      *         <code>MethodFilter</code>
 78  
      */
 79  
     public String getMethodName() {
 80  1
         return methodName;
 81  
     }
 82  
 }