tuscany-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kelvin goodson <kelvingood...@gmail.com>
Subject Re: [2.x] SPI documentation, testing and tracking
Date Tue, 13 Apr 2010 16:18:07 GMT
Having gone through and familiarised myself with all the project level
dependencies for the SCA extension types (results will be posted when
apache infrastructure is responding again) , I'd like to consider how
we'd like to define and record our SPIs.

I found someone considering the issue at [1].  He suggests a
@<projectname>.spi javadoc tag. He also suggests making the spi
evident via the package name, which may be something we might consider
after an initial definition phase.

I propose that we start to use a javadoc tag of @tuscany.spi to
explicitly declare interfaces as spi-s.

I recall being able to add javadoc at the package level, so a first
pass might be to add package level documentation using the tag.
Presence of the tag at this level would initially only give an
indication that there exist some methods in some classes within the
package that are SPIs. The exercise would then be to drill down and
complete the labeling/documentation to the method level.

thoughts?

Kelvin.

[1] http://wiki.eclipse.org/SPI_description

On Thu, Mar 11, 2010 at 6:45 PM, Raymond Feng <enjoyjava@gmail.com> wrote:
> FYI: There is an maven eclipse plugin that can be used to generate maven
> dependency graph.
>
> http://m2eclipse.sonatype.org/
>
> Thanks,
> Raymond
>
> --------------------------------------------------
> From: "kelvin goodson" <kelvingoodson@gmail.com>
> Sent: Thursday, March 11, 2010 9:22 AM
> To: <dev@tuscany.apache.org>
> Subject: Re: [2.x] SPI documentation, testing and tracking
>
>> I started investigating the dependencies of the binding modules, as a
>> starty in breaking this down and understanding the bigger picture.  I
>> put a graph of this on the wiki [1] -- I plan to do the same for the
>> other extension types.
>>
>> [1]
>> http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Tuscany+SPI+Investigations
>>
>> On Wed, Mar 10, 2010 at 3:56 PM, Simon Laws <simonslaws@googlemail.com>
>> wrote:
>>>
>>> On Wed, Mar 10, 2010 at 1:53 PM, kelvin goodson <kelvingoodson@gmail.com>
>>> wrote:
>>>>
>>>> There's a first output from my endeavours at [1]
>>>>
>>>> I haven't checked the output, but how does this generally fit the bill?
>>>>
>>>> Kelvin
>>>>
>>>> [1] http://people.apache.org/~kelvingoodson/digests/out.xml
>>>>
>>>
>>> Nice. As a short term measure we can tell which code has changed
>>> easily without having to revert to looking up each file in the svn
>>> log. We need to filter it down a bit though.
>>>
>>> What we do need to do is be more precise about what we mean about SPI.
>>> Probably down to the level of classes we expect people to extend vs
>>> classes we expect people to call.
>>>
>>> A way of attacking this would be to take each of the extension types in
>>> turn;
>>>
>>> SCA specific ones
>>> --------------------------
>>> binding
>>> implementation
>>> interface
>>> policy
>>>
>>> Tuscany runtime specific ones
>>> ---------------------------------------------
>>> databinding
>>> contribution
>>> host
>>> monitor
>>> extensibility
>>> endpointregistry
>>> etc.
>>>
>>> And look at which SPI like classes are used in each case. Then rather
>>> than just having a long list of SPI packages/classes which is
>>> difficult to understand at least we could identify those used when
>>> creating a particular extension type.
>>>
>>> So, for example, we could take a binding like binding.ws (it's
>>> relatively interesting) and look at it's dependencies. Obviously there
>>> are dependencies between the modules starting binding-ws-xxx however
>>> we are interested in the other, non-atom, Tuscany dependencies. We can
>>> ignore all the 3rd party and test dependencies. So the list I see for
>>> binding-ws (produced with mvn dependency:tree) is
>>>
>>> [INFO] org.apache.tuscany.sca:tuscany-binding-ws:jar:2.0-SNAPSHOT
>>> [INFO] +-
>>> org.apache.tuscany.sca:tuscany-contribution:jar:2.0-SNAPSHOT:compile
>>> [INFO] |  +-
>>> org.apache.tuscany.sca:tuscany-assembly:jar:2.0-SNAPSHOT:compile
>>> [INFO] |  |  \-
>>> org.apache.tuscany.sca:tuscany-monitor:jar:2.0-SNAPSHOT:compile
>>> [INFO] |  +-
>>> org.apache.tuscany.sca:tuscany-assembly-xsd:jar:2.0-SNAPSHOT:compil
>>> e
>>> [INFO] |  +-
>>> org.apache.tuscany.sca:tuscany-extensibility:jar:2.0-SNAPSHOT:compi
>>> le
>>> [INFO] |  +-
>>> org.apache.tuscany.sca:tuscany-common-xml:jar:2.0-SNAPSHOT:compile
>>> [INFO] |  \-
>>> org.apache.tuscany.sca:tuscany-common-java:jar:2.0-SNAPSHOT:compile
>>>
>>> [INFO] |     \-
>>> org.apache.tuscany.sca:tuscany-sca-api:jar:2.0-SNAPSHOT:compile
>>> [INFO] +-
>>> org.apache.tuscany.sca:tuscany-assembly-xml:jar:2.0-SNAPSHOT:compile
>>> [INFO] |  +-
>>> org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:comp
>>> ile
>>> [INFO] |  \- org.codehaus.woodstox:wstx-asl:jar:3.2.4:runtime
>>> [INFO] +-
>>> org.apache.tuscany.sca:tuscany-interface-wsdl:jar:2.0-SNAPSHOT:compile
>>>
>>> [INFO] |  +- org.apache.tuscany.sca:tuscany-xsd:jar:2.0-SNAPSHOT:compile
>>> [INFO] |  \- org.apache.ws.commons.schema:XmlSchema:jar:1.4.3:compile
>>> [INFO] +- wsdl4j:wsdl4j:jar:1.6.2:compile
>>> [INFO] +- org.apache.tuscany.sca:tuscany-builder:jar:2.0-SNAPSHOT:test
>>> [INFO] +- org.apache.tuscany.sca:tuscany-core:jar:2.0-SNAPSHOT:test
>>> [INFO] |  +-
>>> org.apache.tuscany.sca:tuscany-core-spi:jar:2.0-SNAPSHOT:test
>>> [INFO] |  +-
>>> org.apache.tuscany.sca:tuscany-interface-java:jar:2.0-SNAPSHOT:test
>>>
>>> [INFO] |  +- cglib:cglib:jar:2.2:test
>>> [INFO] |  \- asm:asm:jar:3.1:test
>>> [INFO] +-
>>> org.apache.tuscany.sca:tuscany-binding-sca-runtime:jar:2.0-SNAPSHOT:te
>>> st
>>> [INFO] |  \-
>>> org.apache.tuscany.sca:tuscany-databinding:jar:2.0-SNAPSHOT:test
>>> [INFO] \- junit:junit:jar:4.8.1:test
>>>
>>> Extracting the real dependencies gives
>>>
>>> tuscany-contribution - processor and resolver base classes
>>> tuscany-assembly  - assembly models
>>> tuscany-monitor - error reporting
>>> tuscany-assembly-xsd - model schema (don't know why it needs this here)
>>> tuscany-extensibility - locating extension points
>>> tuscany-common-xml - xml utilities
>>> tuscany-common-java - java utilities
>>> tuscany-sca-api - the SCA api (don't know why it needs this here,
>>> possibly for annotations)
>>> tuscany-assembly-xml - processor base classes
>>> tuscany-interface-wsdl - models WSDL interfaces
>>> tuscany-xsd - models schema
>>>
>>> If you look across the bindings it would be nice to think a pattern
>>> emerges.
>>>
>>> Ultimately we'll end up with a list again of course but well be able
>>> to add more detail about what each of the SPIs is for.
>>>
>>> Simon
>>>
>

Mime
View raw message