public static ConcreteClassAnalyzer getInstance() { if(instance == null) instance = new ConcreteClassAnalyzer(); return instance; }
public Set<Class<?>> getConcreteClasses(Class<?> clazz, InheritanceTree inheritanceTree) { if(cache.containsKey(clazz)) return cache.get(clazz); Set<Class<?>> classes = getConcreteClassesImpl(clazz, inheritanceTree); cache.put(clazz, classes); return classes; }
return getConcreteClassesMap(); else if (clazz.equals(java.util.List.class)) return getConcreteClassesList(); else if (clazz.equals(Set.class)) return getConcreteClassesSet(); else if (clazz.equals(java.util.Collection.class)) return getConcreteClassesList(); else if (clazz.equals(java.util.Iterator.class)) return new LinkedHashSet<Class<?>>(); else if (clazz.equals(Comparable.class)) return getConcreteClassesComparable(); else if (clazz.equals(java.util.Comparator.class)) return new LinkedHashSet<Class<?>>(); else if (clazz.equals(java.io.Reader.class)) return getConcreteClassesReader(); else if (clazz.equals(java.io.Writer.class)) return getConcreteClassesWriter();
public void addCastClass(GenericClass clazz, int depth) { if (clazz.getRawClass() == null) { logger.warn("ADDING NULL!"); assert (false); } if (clazz.isAbstract()) { for (Class<?> concreteClass : ConcreteClassAnalyzer.getInstance().getConcreteClasses(clazz.getRawClass(), TestCluster.getInheritanceTree())) { GenericClass c = new GenericClass(concreteClass); if(TestUsageChecker.canUse(c.getRawClass())) { classMap.put(c, depth); } } if(Properties.P_FUNCTIONAL_MOCKING > 0.0) { if (TestUsageChecker.canUse(clazz.getRawClass())) classMap.put(clazz, depth); } } else { if(TestUsageChecker.canUse(clazz.getRawClass())) classMap.put(clazz, depth); } }
ConcreteClassAnalyzer.getInstance().clear();
boundCandidates.add(rawBound); logger.debug("Getting concrete classes for " + rawBound); boundCandidates.addAll(ConcreteClassAnalyzer.getInstance().getConcreteClasses(rawBound, inheritanceTree));
ConstantPoolManager.getInstance().addNonSUTConstant(Type.getType(clazz.getRawClass())); List<Class<?>> actualClasses = new ArrayList<>( ConcreteClassAnalyzer.getInstance().getConcreteClasses(clazz.getRawClass(), inheritanceTree));
logger.info("SUT is an abstract class"); Set<Class<?>> subclasses = ConcreteClassAnalyzer.getInstance().getConcreteClasses(targetClass, inheritanceTree); logger.info("Found " + subclasses.size() + " concrete subclasses");