This is work in progress that is aimed at collecting and clarifying information about the SPIs in Tuscany

I began by charting the project dependencies of the four oasis defined sca extension types using mvn dependency:tree on each of the extension projects

here are some diagrams showing these extension project dependencies

I then went through every source file of every extension of every extension type, both oasis defined and tuscany defined, and marked classes that these extensions directly depend on as being extension SPI, using the javadoc tags of @tuscany.spi.extension,  @tuscany.spi.extension.asclient and @tuscany.spi.extension.inheritfrom.

These latter tags distinguish between the primary way in which a developer of a new extension is expected to develop that extension. If the inheritfrom tag is used, the primary extension development method would be to specialize the tagged class . If the asclient tag is used then the extension developers code would make direct method calls on instances of the spi classes (the oo programming client relationship). The plain tuscany.spi.extension tag is used for cases such as enum declarations that the extension programmer is expected to use, or for marking packages as containing SPI.

The javadoc for all sca code below the modules directory can be seen  at http://people.apache.org/~kelvingoodson/scadoc/apidocs/

This included a crude separation of those packages which contain some part of the extension developers SPI as currently marked by the tags, and those which don't. We wpuld need to do some refactoring of the code to make this a nice source of information,  and as a side benefit, make out code cleaner I would guess.

  • No labels