PolicyFactory policyFactory = new DefaultPolicyFactory();
InterfaceContractMapper interfaceContractMapper = new InterfaceContractMapperImpl();
JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
JavaInterfaceIntrospectorExtensionPoint interfaceVisitors = new DefaultJavaInterfaceIntrospectorExtensionPoint();
JavaImplementationFactory javaImplementationFactory = new BeanJavaImplementationFactory(beanFactory);
JavaClassIntrospectorExtensionPoint classVisitors = new DefaultJavaClassIntrospectorExtensionPoint();
JavaInterfaceIntrospector interfaceIntrospector = new ExtensibleJavaInterfaceIntrospector(javaFactory, interfaceVisitors);
BaseJavaClassVisitor[] extensions = new BaseJavaClassVisitor[] {
new ConstructorProcessor(assemblyFactory),
new AllowsPassByReferenceProcessor(assemblyFactory),
new ContextProcessor(assemblyFactory),
new ConversationProcessor(assemblyFactory),
new DestroyProcessor(assemblyFactory),
new EagerInitProcessor(assemblyFactory),
new InitProcessor(assemblyFactory),
new PropertyProcessor(assemblyFactory),
new ReferenceProcessor(assemblyFactory, javaFactory, interfaceIntrospector),
new ResourceProcessor(assemblyFactory),
new ScopeProcessor(assemblyFactory),
new ServiceProcessor(assemblyFactory, javaFactory, interfaceIntrospector),
new HeuristicPojoProcessor(assemblyFactory, javaFactory, interfaceIntrospector),
new PolicyProcessor(assemblyFactory, policyFactory)
};
for (JavaClassVisitor e : extensions) {
classVisitors.addClassVisitor(e);
}
JavaClassIntrospector classIntrospector = new ExtensibleJavaClassIntrospector(classVisitors);
// Populate ArtifactProcessor registry
DefaultStAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint();