Clover coverage report - Maven Clover report
Coverage timestamp: Sun Mar 18 2007 17:42:32 CET
file stats: LOC: 115   Methods: 7
NCLOC: 86   Classes: 2
 
 Source file Conditionals Statements Methods TOTAL
RMockNamingPolicy.java 70% 100% 100% 94.3%
coverage coverage
 1    package com.agical.rmock.extension.cglib;
 2   
 3    import java.util.HashMap;
 4    import java.util.HashSet;
 5    import java.util.Map;
 6    import java.util.Set;
 7   
 8    import net.sf.cglib.core.NamingPolicy;
 9    import net.sf.cglib.core.Predicate;
 10   
 11    import com.agical.rmock.core.util.StringUtils;
 12   
 13    public class RMockNamingPolicy implements NamingPolicy {
 14    private static Map IDENTIFIER_GENERATORS;
 15    private static Map cachedNames = new HashMap();
 16    private static Set usedNames = new HashSet();
 17    static {
 18  1 IDENTIFIER_GENERATORS = new HashMap();
 19  1 IDENTIFIER_GENERATORS.put(RMockNamingPolicy.MOCK, new IdentifierGenerator() {
 20  62 public String generateIdentifier(String identifier) {
 21  62 String string = StringUtils.capitalize(identifier)+"Mock";
 22  62 return string;
 23    }
 24    });
 25  1 IDENTIFIER_GENERATORS.put(RMockNamingPolicy.INTERCEPTED, new IdentifierGenerator() {
 26  32 public String generateIdentifier(String identifier) {
 27  32 String string = "Intercepted"+StringUtils.capitalize(identifier);
 28  32 return string;
 29    }
 30    });
 31   
 32  1 IDENTIFIER_GENERATORS.put(RMockNamingPolicy.FAKED_AND_INTERCEPTED, new IdentifierGenerator() {
 33  2 public String generateIdentifier(String identifier) {
 34  2 String string = "InterceptedFaked"+StringUtils.capitalize(identifier);
 35  2 return string;
 36    }
 37    });
 38    }
 39   
 40    public static final String MOCK = "M";
 41    public static final String INTERCEPTED = "I";
 42    public static final String FAKED_AND_INTERCEPTED = "FI";
 43    private final String type;
 44    private final String identifier;
 45   
 46  785 public RMockNamingPolicy(String identifier, String type) {
 47  785 this.identifier = identifier;
 48  785 this.type = type;
 49   
 50    }
 51   
 52    /*public String getClassName(String prefix, String source, Object key,
 53    Predicate predicate) {
 54   
 55   
 56    String baseName = pkg+((IdentifierGenerator)IDENTIFIER_GENERATORS.get(type)).generateIdentifier(identifier)+'_'+key.hashCode();
 57    String nameToReturn = baseName;
 58    int count = 0;
 59    while(predicate.evaluate(nameToReturn)) {
 60    nameToReturn = baseName + (++count);
 61    }
 62    return nameToReturn;
 63    }*/
 64   
 65  96 public String getClassName(String prefix, String source, Object key, Predicate names) {
 66  96 String attempt;
 67  96 String base;
 68  96 synchronized (cachedNames) {
 69   
 70  96 String pkg = getPackage(prefix);
 71   
 72  96 StringBuffer sb = new StringBuffer();
 73  96 prefix = createBaseName(pkg);
 74  96 sb.append(
 75  96 (prefix != null) ?
 76    (
 77  96 prefix.startsWith("java") ?
 78    "$" + prefix : prefix
 79    )
 80    : "com.agical.rmock.empty.Object"
 81    );
 82  96 base = sb.toString();
 83  96 attempt = base;
 84  96 int index = 2;
 85  96 while (usedNames.contains(attempt) || names.evaluate(attempt)) {
 86  73 attempt = base + "_" + index++;
 87    }
 88  96 cachedNames.put(key, attempt);
 89    }
 90  96 usedNames.add(attempt);
 91  96 return attempt;
 92    }
 93   
 94  96 private String createBaseName(String pkg) {
 95  96 String baseName = pkg+((IdentifierGenerator)IDENTIFIER_GENERATORS.get(type)).generateIdentifier(identifier);
 96  96 return baseName.replace(' ', '_');
 97    }
 98   
 99  96 private String getPackage(String prefix) {
 100  96 String pkg = "";
 101  96 int dotIndex = prefix.lastIndexOf('.');
 102  96 if (dotIndex != -1) {
 103  96 pkg = prefix.substring(0, dotIndex+1);
 104  96 if (pkg.startsWith("java")) {
 105  9 pkg = "rmock."+pkg;
 106    }
 107    }
 108  96 return pkg;
 109    }
 110   
 111    }
 112   
 113    interface IdentifierGenerator {
 114    String generateIdentifier(String identifier);
 115    }