Hi Eddy,

I'm not sure that will make enough sense, I'll clarify JR's statement a bit.

RIFE splits up your site structure in two distinct parts:
* declaration
* implementation

Declaration is the whole site structure itself and implementation is the Java code (or Groovy, Pnuts, Janino, ...) code of each element.

When using 'extends', you take the declaration of one particular element and extend upon it. This is mostly for convenience sake and doesn't actually give you much real value beside having a central place of modification and reducing the amount of declaration to write.

When using 'inherits' you take the combination of the declaration and the implementation, which I call the behavior, of an element and ensure that it happens before the behavior of another element. This behavior can however be very complex and you should actually see it as layering several site-structures on top of each other. You will stay in the inherited behavior until its associated child trigger condition has been encountered or the child is explicitly triggered. Only then you will 'drop down' to the lower level and execute that behavior. The implementation of this is done is such a way that when a request targets the lower level, and it inherits other behavior in an upper level, the whole context that was sent to the initial element is preserved and even though several request/response cycles might be executed in the upper level, once it drops down to the original child element, the original context will also be restored as if nothing happened. The benefits of this are explained here: http://rifers.org/ blogs/gbevin/2005/3/15/session_timeout_solution

So you see that 'inherits' gives you a way to declare cross-concern logic in a way that's not very different from AOP. It offers a lot of new and unique features since you can stack your inheritance declarations and have a real inheritance tree. This is one of the features that you will only find in RIFE afaik.

I hope this as clear enough for you, I do tend to over complicate things at time when explaining.

Best regards,

Geert

On 15-nov-05, at 23:29, JR Boyens wrote:

You can inherit multiple interfaces, you can only extend one class.

On 11/15/05, Eddy Young <[EMAIL PROTECTED]> wrote:
Can anyone please explain the reason behind having both "extends" and
"inherits"? These two attributes seem to serve the same purpose.

--
Geert Bevin                       Uwyn bvba
"Use what you need"               Avenue de Scailmont 34
http://www.uwyn.com               7170 Manage, Belgium
gbevin[remove] at uwyn dot com    Tel +32 64 84 80 03

PGP Fingerprint : 4E21 6399 CD9E A384 6619  719A C8F4 D40D 309F D6A9
Public PGP key  : available at servers pgp.mit.edu, wwwkeys.pgp.net


_______________________________________________
Rife-users mailing list
Rife-users@uwyn.com
http://www.uwyn.com/mailman/listinfo/rife-users

Reply via email to