private void addDependencies(GenericConstructor constructor, int recursionLevel) { if (recursionLevel > Properties.CLUSTER_RECURSION) { logger.debug("Maximum recursion level reached, not adding dependencies of {}", constructor); return; } if (dependencyCache.contains(constructor)) { return; } logger.debug("Analyzing dependencies of " + constructor); dependencyCache.add(constructor); for (java.lang.reflect.Type parameterClass : constructor.getRawParameterTypes()) { logger.debug("Adding dependency " + parameterClass); addDependency(new GenericClass(parameterClass), recursionLevel); } }
private void addDependencies(GenericField field, int recursionLevel) { if (recursionLevel > Properties.CLUSTER_RECURSION) { logger.debug("Maximum recursion level reached, not adding dependencies of {}", field); return; } if (dependencyCache.contains(field)) { return; } if (field.getField().getType().isPrimitive() || field.getField().getType().equals(String.class)) return; logger.debug("Analyzing dependencies of " + field); dependencyCache.add(field); logger.debug("Adding dependency " + field.getName()); addDependency(new GenericClass(field.getGenericFieldType()), recursionLevel); }
private boolean addCastClassDependencyIfAccessible(String className, Set<String> blackList) { if (className.equals(java.lang.String.class.getName())) return true; if (blackList.contains(className)) { logger.info("Cast class in blacklist: " + className); return false; } try { Class<?> clazz = TestGenerationContext.getInstance().getClassLoaderForSUT().loadClass(className); if (!TestUsageChecker.canUse(clazz)) { logger.debug("Cannot use cast class: " + className); return false; } // boolean added = addDependency(new GenericClass(clazz), 1); genericCastClasses.add(new GenericClass(clazz)); concreteCastClasses.add(clazz); blackList.add(className); return true; } catch (ClassNotFoundException e) { logger.error("Problem for " + Properties.TARGET_CLASS + ". Class not found", e); blackList.add(className); return false; } }
private void addDependencies(GenericMethod method, int recursionLevel) { if (recursionLevel > Properties.CLUSTER_RECURSION) { logger.debug("Maximum recursion level reached, not adding dependencies of {}", method); return; } if (dependencyCache.contains(method)) { return; } logger.debug("Analyzing dependencies of " + method); dependencyCache.add(method); for (java.lang.reflect.Type parameter : method.getRawParameterTypes()) { logger.debug("Current parameter " + parameter); GenericClass parameterClass = new GenericClass(parameter); if (parameterClass.isPrimitive() || parameterClass.isString()) continue; logger.debug("Adding dependency " + parameterClass.getClassName()); addDependency(parameterClass, recursionLevel); } // If mocking is enabled, also return values are dependencies // as we might attempt to mock the method // // Only look at the return values of direct dependencies as the // number of dependencies otherwise might explode if (Properties.P_FUNCTIONAL_MOCKING > 0 && recursionLevel == 1) { GenericClass returnClass = method.getGeneratedClass(); if (!returnClass.isPrimitive() && !returnClass.isString()) addDependency(returnClass, recursionLevel); } }
addDependency(new GenericClass(clazz.getComponentType()), recursionLevel); return;