The naming convention ("Control Type" and "Control Public Interface") sounds 
good.

One small thing though. In theory there's nothing to stop you from implementing 
multiple interfaces at each stage i.e.

@ControlExtension
public interface Foo extends Abc, Def

Foo, Abc and Def are all interfaces and all have @ControlExtension defined.

And similarly:

@ControlInterface
public interface Bar extends Tuv, Xyz

where Bar, Tuv and Xyz all have @ControlInterface defined.

This is _not_ a typical usage but still the possibility remains.

Typically you want to get the "nearest" @ControlInterface from a given 
@ControlExtension. To do this you'd want to follow Class.getInterfaces() on Foo 
up the tree until you hit a Class that defines @ControlInterface. But there 
could theoretically be multiple of these so when we define the way of getting 
to a control public interface from the control extension we should probably 
define some API such as:

public Class[] getControlPublicInterfaces();

which will return this list.

In the vast majority of cases I imagine there'd only be 1 element in the array, 
but just in case.

Cheers,

Lawrence

> -----Original Message-----
> From: Ken Tam 
> Sent: Monday, August 09, 2004 6:24 PM
> To: Beehive Developers
> Subject: Control concept names
> 
> 
> Consider a general inheritance chain of interfaces for controls,
> annotated thusly (base interfaces on the bottom):
> 
> @ControlExtension public interface Foo   <--- this is an interesting
> interface
> @ControlExtension
> .. etc
> @ControlExtension
> @ControlInterface public interface Bar   <--- this is an interesting
> interface
> @ControlInterface
> .. etc
> @ControlInterface
> 
> There is a BarImpl.jcs present.
> 
> This results in the generation of:
> 
> class FooBean
> class BarBean
> 
> (as well as Bean classes for the intermediary @ControlExtension and
> @ControlInterface interfaces in the chain that I've left nameless).
> 
> What do we call these artifacts?  Here's a proposal:
> 
> When discussing Foo:
>   Foo - "the control type"
>   Bar - "the control public interface"
>   FooBean - "the control bean"
>   BarBean - not interesting
>   BarImpl.jcs - the control implementation
> 
> When discussing Bar:
>   Foo - not interesting
>   Bar - "the control type" _and_ "the control public interface"
>   FooBean - not interesting
>   BarBean - "the control bean"
>   BarImpl.jcs - the control implementation
> 
> I'm open to replacing "control type" with "control interface" or
> "control interface  type".  I think "control interface" is somewhat
> confusing when paired with the above usage of "control public
> interface", but perhaps "control type" is just a little too odd?
> 
> 
>   
>   
> 
> 
> 
> 

Reply via email to