public void applyHeuristics(InjectingComponentType componentType, Class<?> implClass, IntrospectionContext context) {
serviceHeuristic.applyHeuristics(componentType, implClass, context);
if (componentType.getConstructor() == null) {
Signature ctor = findConstructor(implClass, componentType, context);
componentType.setConstructor(ctor);
}
if (componentType.getProperties().isEmpty() && componentType.getReferences().isEmpty() && componentType.getResourceReferences().isEmpty()) {
evaluateConstructor(componentType, implClass, context);
evaluateSetters(componentType, implClass, context);
evaluateFields(componentType, implClass, context);
}
if (componentType.getInitMethod() == null) {
Signature setUp = getCallback(implClass, "setUp");
if (setUp == null) {
setUp = getCallback(implClass, Before.class);
}
componentType.setInitMethod(setUp);
}
if (componentType.getDestroyMethod() == null) {
Signature tearDown = getCallback(implClass, "tearDown");
if (tearDown == null) {
tearDown = getCallback(implClass, After.class);
}
componentType.setDestroyMethod(tearDown);
}
}