...
Panel | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Hi, I'm trying to indentify all the paths of SCA component interactions which By the SCA spec, there are three cases for the wiring: 1) Component.Reference (A.ref1) -is wired to-> Component.Service (B.svc1) 1.2) If the service is defined on a composite component, then it can be For example, A.ref1 --> B.svc1 (B is implemented by another composite and 1.3) If the reference is defined on a composite component, then it can be For example, A.ref1 --> B.svc1 (A is implemented by another composite and 2) Composite.Reference (Composite1.ref1) -promotes-> Component.Reference If Composite1 is used to implement a component A in Composite2, then we need If B is a composite component, then we need to find out the final component 3) Composite.Service (Composite1.svc1) -promotes-> Component.Service The target will be the innermost service on the promotion chain. For
Based on the above scenarios, it seems that we can create runtime wires 1) Runtime wire for references: For each of the references (r1) on 2) Runtime wire for service promotions: For each of the service1 (s1) on The service/reference promotions make the picture complicated. I hope my Thanks, |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
public interface RuntimeContext<M> extends Lifecycle {
/**
* Create an intercetor for the model in the invocation chain. For a reference binding,
* the interceptor is responsible to make the outbound invocation over the binding protocol.
* For a service binding, the interceptor is responsible to dispatch the incoming call to
* the target component service that the service promotes. For a component implementation,
* the interceptor will be responsible for calling the implementation logic for the given
* component.
*
* @param model The service that defines the binding
* @param operation The operation that the interceptor will handle
* @param isCallback A flag to tell if the operation is for the callback
* @return An interceptor that handles the invocation logic, null should be returned if no
* interceptor is required
*/
Interceptor createInterceptor(M model, Operation operation, boolean isCallback);
/**
* Get the effective interface contract imposed by the binding or implementation. For
* example, it will be interface contract introspected from the WSDL portType used by the
* endpoint for a WebService binding.
*
* @return The effective interface contract
*/
InterfaceContract getEffectiveInterfaceContract();
}
public interface ReferenceBindingContext extends RuntimeContext<Reference> {
/**
* @param wire
*/
void setRuntimeWire(RuntimeWire wire);
/**
* @return
*/
RuntimeWire getWire();
}
public interface ServiceBindingContext extends RuntimeContext<Service> {
/**
* @param wire
*/
void setRuntimeWire(RuntimeWire wire);
/**
* @return
*/
RuntimeWire getWire();
}
public interface ImplementationContext extends RuntimeContext<Component> {
}
|