}
public void start(ExtensionPointRegistry registry) {
// Create the resource binding factory
ModelFactoryExtensionPoint factories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
HTTPResourceBindingFactory bindingFactory = new DefaultHTTPResourceBindingFactory();
factories.addFactory(bindingFactory);
// Create the resource implementation factory
AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
JavaInterfaceIntrospectorExtensionPoint visitors = registry.getExtensionPoint(JavaInterfaceIntrospectorExtensionPoint.class);
JavaInterfaceIntrospector introspector = new ExtensibleJavaInterfaceIntrospector(javaFactory, visitors);
ResourceImplementationFactory resourceFactory = new DefaultResourceImplementationFactory(assemblyFactory, javaFactory, introspector, bindingFactory);
factories.addFactory(resourceFactory);
// Add the resource binding extension to the StAXArtifactProcessor
// extension point
StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
HTTPResourceBindingProcessor bindingArtifactProcessor = new HTTPResourceBindingProcessor(bindingFactory);
processors.addArtifactProcessor(bindingArtifactProcessor);
// Add the resource implementation extension to the StAXArtifactProcessor
// extension point
ContributionFactory contributionFactory = factories.getFactory(ContributionFactory.class);
ResourceImplementationProcessor implementationArtifactProcessor = new ResourceImplementationProcessor(resourceFactory, contributionFactory);
processors.addArtifactProcessor(implementationArtifactProcessor);
// Add the provider factories to the provider factory extension point
ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);