Hi,

Now we have Endpoint/EndpointReference models to encapsulate the metadata for <component, service/reference, binding>. I think we should better align the core-spi to the Endpoint/EndpointReference to further simplify the invocation/extension code.

a) Move the methods from RuntimeWire to Endpoint/EndpointReference (potentially RuntimeEndpoint/RuntimeEndpointReference)

1) Endpoint owns the service binding invocation chain (one per Endpoint) and the service invocation chains (one per Operation) 2) EndpointReference owns the reference invocation chains (one per Operation) and the reference binding invocation chain (one per EndpointReference) 3) For local wires over a given binding, the EndpointReferenceProvider for the binding is responsible for finding the corresponding service invocation chain from the Endpoint and dispatch the invocations to it. This can be done in the BindingInvoker.

b) Remove methods that looks up by binding from RuntimeComponentService/RuntimeComponentReference and push them onto the Endpoint/EndpointReference if necessary.

c) Simplify the BindingProviderFactory/ServiceBindingProvider/ReferenceBindingProvider SPIs:

   1) Replace the component/service/binding tuple with Endpoint
   2) Replace the component/reference/binding tuple with EndpointReference

Thanks,
Raymond

Reply via email to