Hi Raymond I've just been bringing up the binding-jms module so I took the opportunity to review your guide. Thanks for writing all this stuff down! I haven't gone through the databinding slides yet but I thought I would post what I had. I recorded comments (see below) as I went through it. I'm more than happy to help with new new/adjusted content if you like. Maybe we can move this guide onto the wiki to make it easier to access?
Regards Simon =============== Slide 3. Do you mean the SCA Assembly Model as defined in the specification? We could add a reference to the spec to make this clear. If not what does this mean? Slide 4. Need to be clearer when stating "Tuscany core and extension modules can also define extension points where extensions can be added". Would be good to have some context before this slide. I.e. What is the structure of the extension mechanism, can we have an example of the kind of extensions that would be loaded for a running application and how they might be related. When might I want to - Plug and extension directly into the Tuscany runtime - Extend an extension point defined by the "Tuscany Core and extension modules" as this slide seems to imply I can - Provide a new extension point Slide 5. Under what circumstances do I need to contribute and extension point using the getExtensionPoints() method? Define "interested extension points". How might I link extension points that have a dependency on on another? How do I choose whether to unregister my extension during stop()? Slide 6. "The same instance will be used to invoke all the methods during different phases of the module activation." What methods am I expected to invoke using the single instance I have? Or does this mean that all startup methods will be invoked on a single instance of the Activiator class. Under what circumstances would I have more than one class in the META-INF/services/org.apache.tuscany.core.ModuleActivator file? Slide 7. Seems to be the same as slide 4 but with a different title. This slide has started using the term "Providers". I assume that it will define what a provider is and how if differs from the, presumably wider, extension term. Slide 8. Does "It's contracted by the SPI org.apache.tuscany.sca.provider.ImplementationProvider " mean that it simply implements the interface org.apache.tuscany.sca.provider.ImplementationProvider or is there some more involved "contracting"(?) protocol that I must observe. In what circumstances should it react to Start/Stop Slide 9. Same "contracted" point as slide 8. Same start/stop point as slide 8. Slide 10. Same "contracted" point as slide 8. What does "promoted component" mean in this context? Slide 11. Nice picture. Gives a really good overview. Could do with more like this. Slide 12. Slide 13. Slide 14. This slides starts using the implementation.crud extension as a sample. Would be good to have a slide describing what the intention of the implementation.crud extension to give people a bit of a lead in. Explain why no XML schema is required by the runtime. Slide 15. Last point. "provides" -> "provide"? Slide 16. How is the logical model associated with the Implementation Provider? Slide 17. Is start/stop called every time a component of the implementation type is started? Slide 18. There is a hidden level of infrastructure in the runtime. Ie. ExtensionPointRegistry StaxArtifactProcessorExtensionPoint ProviderFactoryExtenionPoint ... What is the complete list of these things that should be available ? What do they all do? Which ones do I need to register with and in what circumstances? What happens are run time with these registrations? Slide 19. Slide 20. Slide 21 point 5. describe "respective extension points" point 6. what does contribute mean here? Check it in somewhere or put it on the classpath? Slide 22. Slide 23. EchoBindingImpl must also implement methods from the SPI interfaces it inherits via the base binding interface public String getURI() public void setURI(String uri) public String getName() public void setName(String name) public List<Intent> getRequiredIntents() public boolean isUnresolved() public void setUnresolved(boolean unresolved) public List<PolicySet> getPolicySets() public List<Object> getExtensions() Also requires properties to support these as appropriate. EchoBindingProcessor may also have to deal with other information such as Policy sets and intents Slide 24. It talks about Invokers rather than interceptors. I think this is out of date. Slide 25. Get the interface contract imposed by the binding protocol layer. Isn't it the interface imposed by the service? Slide 26. Slide 27. This looks quite complicated and could benefit from hand layout. Or even use a context diagram to show how the pieces relate. Haven't gone through the databinding slides yet.
