/** * Determine the set of generators for an Object.class instance * * @return a collection of all cast classes stored in {@link CastClassManager}; cannot be <code>null</code>>. */ public Set<GenericAccessibleObject<?>> getObjectGenerators() { // TODO: Use probabilities based on distance to SUT Set<GenericAccessibleObject<?>> result = new LinkedHashSet<>(); List<GenericClass> classes = new ArrayList<>( CastClassManager.getInstance().getCastClasses()); for (GenericClass clazz : classes) { try { result.addAll(getGenerators(clazz, true)); } catch (ConstructionFailedException e) { // ignore } } try { result.addAll(getGenerators(new GenericClass(Object.class), true)); } catch (ConstructionFailedException e) { // ignore } return result; }
/** * Get a list of all generator objects for the type * * @param clazz * @param resolve * @return * @throws ConstructionFailedException */ public Set<GenericAccessibleObject<?>> getGenerators(GenericClass clazz, boolean resolve) throws ConstructionFailedException { // Instantiate generic type if (clazz.hasWildcardOrTypeVariables()) { GenericClass concreteClass = clazz.getGenericInstantiation(); if (!concreteClass.equals(clazz)) return getGenerators(concreteClass, false); } if (isSpecialCase(clazz)) { return getGeneratorsForSpecialCase(clazz); } if (!hasGenerator(clazz)) throw new ConstructionFailedException("No generators of type " + clazz); return generatorCache.get(clazz); }
private void gatherStatistics() { ClientServices.getInstance().getClientNode().trackOutputVariable(RuntimeVariable.Analyzed_Classes, analyzedClasses.size()); ClientServices.getInstance().getClientNode().trackOutputVariable(RuntimeVariable.Generators, TestCluster.getInstance().getGenerators().size()); ClientServices.getInstance().getClientNode().trackOutputVariable(RuntimeVariable.Modifiers, TestCluster.getInstance().getModifiers().size()); }
allCalls = TestCluster.getInstance().getGenerators(new GenericClass( returnType), true); } catch (ConstructionFailedException e) {