public void introspect(InjectingComponentType componentType, IntrospectionContext context) {
componentType.setScope(Scope.STATELESS);
Class<?> implClass = componentType.getImplClass();
if (implClass.isInterface()) {
InvalidImplementation failure = new InvalidImplementation("Implementation class is an interface", implClass, componentType);
context.addError(failure);
return;
}
TypeMapping mapping = context.getTypeMapping(implClass);
if (mapping == null) {
mapping = new TypeMapping();
context.addTypeMapping(implClass, mapping);
helper.resolveTypeParameters(implClass, mapping);
}
try {
classVisitor.visit(componentType, implClass, context);
heuristic.applyHeuristics(componentType, implClass, context);
} catch (NoClassDefFoundError e) {
context.addError(new ImplementationArtifactNotFound(implClass.getName(), e.getMessage(), componentType));
}
validateScope(componentType, implClass, context);
for (PostProcessor postProcessor : postProcessors) {
postProcessor.process(componentType, implClass, context);
}
}