Clover coverage report - Dependency Finder
Coverage timestamp: Mon Nov 29 2010 15:00:50 PST
file stats: LOC: 114   Methods: 9
NCLOC: 58   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
FilteringSymbolGathererStrategy.java 100% 100% 100% 100%
coverage
 1    /*
 2    * Copyright (c) 2001-2009, Jean Tessier
 3    * All rights reserved.
 4    *
 5    * Redistribution and use in source and binary forms, with or without
 6    * modification, are permitted provided that the following conditions
 7    * are met:
 8    *
 9    * * Redistributions of source code must retain the above copyright
 10    * notice, this list of conditions and the following disclaimer.
 11    *
 12    * * Redistributions in binary form must reproduce the above copyright
 13    * notice, this list of conditions and the following disclaimer in the
 14    * documentation and/or other materials provided with the distribution.
 15    *
 16    * * Neither the name of Jean Tessier nor the names of his contributors
 17    * may be used to endorse or promote products derived from this software
 18    * without specific prior written permission.
 19    *
 20    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 21    * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 22    * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 23    * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
 24    * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 25    * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 26    * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 27    * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 28    * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 29    * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 30    * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 31    */
 32   
 33    package com.jeantessier.classreader;
 34   
 35    import java.util.*;
 36   
 37    import org.apache.oro.text.perl.*;
 38   
 39    public class FilteringSymbolGathererStrategy extends SymbolGathererStrategyDecorator {
 40    private Perl5Util perl = new Perl5Util();
 41   
 42    private List<String> includes;
 43    private List<String> excludes;
 44   
 45  39 public FilteringSymbolGathererStrategy(SymbolGathererStrategy delegate, List<String> includes, List<String> excludes) {
 46  39 super(delegate);
 47   
 48  39 this.includes = includes;
 49  39 this.excludes = excludes;
 50    }
 51   
 52  31 public List<String> getIncludes() {
 53  31 return includes;
 54    }
 55   
 56  19 public List<String> getExcludes() {
 57  19 return excludes;
 58    }
 59   
 60  7 public boolean isMatching(Classfile classfile) {
 61  7 boolean result = false;
 62   
 63  7 if (matches(classfile.getClassName())) {
 64  2 result = super.isMatching(classfile);
 65    }
 66   
 67  5 return result;
 68    }
 69   
 70  7 public boolean isMatching(Field_info field) {
 71  7 boolean result = false;
 72   
 73  7 if (matches(field.getFullSignature())) {
 74  2 result = super.isMatching(field);
 75    }
 76   
 77  5 return result;
 78    }
 79   
 80  7 public boolean isMatching(Method_info method) {
 81  7 boolean result = false;
 82   
 83  7 if (matches(method.getFullSignature())) {
 84  2 result = super.isMatching(method);
 85    }
 86   
 87  5 return result;
 88    }
 89   
 90  7 public boolean isMatching(LocalVariable localVariable) {
 91  7 boolean result = false;
 92   
 93  7 if (matches(localVariable.getName())) {
 94  2 result = super.isMatching(localVariable);
 95    }
 96   
 97  5 return result;
 98    }
 99   
 100  28 private boolean matches(String name) {
 101  28 return matches(getIncludes(), name) && !matches(getExcludes(), name);
 102    }
 103   
 104  44 private boolean matches(List<String> regularExpressions, String name) {
 105  44 boolean result = false;
 106   
 107  44 Iterator<String> i = regularExpressions.iterator();
 108  44 while (!result && i.hasNext()) {
 109  36 result = perl.match(i.next(), name);
 110    }
 111   
 112  36 return result;
 113    }
 114    }