Next in thread → Next in month →

Re: [sca-c-cpp] NEW ISSUE: Should the C++ SCA spec define annotations

From
Andrew Borley <>
Date
2007-12-14T09:20:32+00:00
ID
Thread
Re: [sca-c-cpp] NEW ISSUE: Should the C++ SCA spec define annotations
This issue has been assigned id CCPP-31
in the Jira system. 

See http://www.osoa.org/jira/browse/CCPP-31

Andrew

____________________________________________________________

Andrew Borley

Websphere ESB Development

Tel: 245393 Ext: +44 (0) 1962 815393 Mob: +44 (0) 7971 805547

E-mail: 

Mailpoint 211, IBM (UK) Ltd, Hursley Park, Winchester, Hants, SO21 2JN

____________________________________________________________

"David Haney" <>
wrote on 14/12/2007 00:46:20:

> TARGET: C++ C&I Specification

> 

> DESCRIPTION:

> Should the C++ spec define annotations for marking up source code
with

> SCA service information?  C++ does not natively define an annotation

> format or behavior, so annotations must be defined as a language

> extension that is both compatible with standard C++, and presumably
that

> would be parseable by an SCA defined parser.  If the spec should
define

> an annotation system for C++, we also need to define conformance

> guidelines for how those annotations will be used. (i.e., does the

> runtime need to parse the C++ in order to extract that information?
 Are

> annotations purely a design-time tool that allows code generation
of

> SCDL files? should annotations result in code that is compiled into
the

> library, that the runtime could query in order to extract a description

> of the service).

> 

> PROPOSAL:

> There seem to be three primary approaches that we could take towards

> annotations, each with their associated implications.

> 

> 1) Annotations are not defined by the spec.

> 

> The SCA runtime would rely solely on the SCDL files in order to describe

> a service, and would not make any attempts to parse the source files
at

> runtime.  This will require that some information to be duplicated

> between the source code and the SCDL files that describe the source.

> 

> The SCA spec would not attempt to define a mechanism for generating
SCDL

> files from the source.  It would leave it up to individual vendors
to

> define their own mechanism, which could be through the use of

> annotations, or could be through some other proprietary mechanism.

> Portability would be maintained at runtime in that each runtime would
be

> expected to consume SCDL files to retrieve description information,
and

> should be independent of whether the SCDL was written by hand or

> generated from the source.

> 

> This has the benefit of removing the need to define an annotation
system

> in C++.  Individual vendors would be free to define (or not define)

> they're own schemes for creating SCDL for C++ code.  Those schemes
could

> be annotation based, or could be provided by some other mechanism.

> 

> 

> 2) Annotations are a design-time tool to allow for generating SCDL

> files.

> 

> As in (1), the SCA runtime would still rely solely on SCDL files in

> order to describe the service; however the specification would also

> define a mechanism for marking up code so that the SCDL files could
be

> generated from the source.

> 

> This is relatively close to what the current system supports, however
it

> would clarify the role of annotations in the SCA runtime, and precedence

> rules for when information is defined in both the SCDL and in

> annotations (the canonical information would need to be in SCDL,

> annotations would not affect runtime behavior).

> 

> This has the same benefit as (1) in regard to defining where canonical

> information is stored at runtime, in the SCDL files.

> 

> If this was the approach we decided to pursue, would annotation support

> be required of a conforming implementation, or would this be a case

> where annotations are still optional, however if annotations are

> defined, they must follow this convention?

> 

> Since this isn't an issue for the runtime (it will still reference

> SCDL), who would the conformance statements apply to?  Is there
a

> conformance target for tools vendors (which could be independent of
the

> runtime vendors?).

> 

> 

> 3) Annotations are a runtime tool, allowing for programmatic

> introspection (and possibly design-time introspection as well).

> 

> This is probably the most complex solution; however it would also

> provide functionality that's closest to what's being provided by Java's

> annotations.  Under this mechanism, we would define an annotation
system

> in C++ that would allow us to introspect the class at runtime in order

> to derive information.

> 

> On a cursory review, there are two forms this could take.  One
would be

> to implement annotations through a macro-based system that would allow

> us to insert methods that would provide meta-data about a service
into

> the service itself.  Since C++ does not provide basic introspection
for

> classes (such as what methods a class provides), we would have to
go

> beyond the basic annotations that Java supports, and also define

> mechanisms for defining methods and their arguments through the

> annotations system as well.  This could quickly result in us
needing to

> define both the method and a macro with meta-information about the

> method for each method in the class.  This seems like its going
well

> beyond what the language would normally support, and is probably on
the

> level of supporting dependency-injection, which we've implied is beyond

> the scope of what we want to tackle in the spec at this point.

> 

> A second approach would be to generate a wrapper class around the
user's

> class that would provide the meta-information.  The runtime could
then

> query this code-generated class at runtime in order to extract

> information.  This would require annotations similar to what's
required

> in (2).  I'm not sure this would provide any benefit over parsing
the

> SCDL file to retrieve this information (as in 2), and would mandate
more

> about the runtime implementation than in (2).

> 

> There may be further options for how we could achieve (3) that would

> eliminate some of the drawbacks outlined here.

> 

>  

> On a first pass, (2) seems like it may be the safest choice.  This
would

> maintain most of the compatibility with what was defined in OSOA 1.0,

> however it would also clarify the role of annotations, which should
make

> writing conformance guidelines cleaner (and easier for vendors to

> implement).  (1) however is also very tempting, as it would greatly

> simplify the spec (eliminating all discussion of annotations), and
would

> provide vendors more flexibility in how they want to generated SCDL
from

> source.  Assuming we make supporting annotations optional, I
believe (1)

> becomes a degenerate case of (2), as a complying vendor could opt
out of

> supporting annotations, and could still provide an alternative mechanism

> for generating SCDL.

> 

> A fourth option might be to go with (1) for the main specification,

> however to also provide a supplementary specification that defines

> conformance for a tool vendor to generate SCDL from source code.  This

> could even be a non-normative document that just provides a recommended

> annotation format.

> 

> Thanks.

> 

> David.

> 

> 

> -- David Haney

> -- Chief Architect, Hydra Products

> -- Rogue Wave Software

> -- http://www.roguewave.com/ 

> 

> 

> 

> ---------------------------------------------------------------------

> To unsubscribe from this mail list, you must leave the OASIS TC that

> generates this mail.  You may a link to this group and all your
TCs in OASIS

> at:

> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php

> 

Unless stated otherwise above:

IBM United Kingdom Limited - Registered in England and Wales with number
741598. 

Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
Next in thread → Next in month →