I originally did use a base page, but decided against it for a number
of reasons.

The first is that nearly all pages in the app are protected (it's a
management app), so nearly every page would need to extend this base
class just to get this otherwise free feature.  I don't really like
that.

I can tell tapestry that the default base page is this page, but then
pages that don't otherwise need a page class at all AND don't need the
security check have to create a page class that extends BasePage just
to avoid the security check.  Seem pointless.

Another issue is that of enforcement.  If a developer needs to
implement the pageAttach method they need to remember to call
super.pageAttach first.  Alternatively, I can make the pageAttach
method final in the base class to eliminate the potential security
bugs and redirect to a new method (say, realPageAttach) that needs to
be overridden by pages that need that callback -- except, again, for
those classes that don't need authentication, which should extend
directly from BasePage and implement PageAttachedListener and
implement the method themselves.  Seems alot for people to have to
remember just to use the authentication features correctly.

Even if the logic exists in the base class, the callback issue remains
the same.  Pages that want to be callbackable will have to implement
some method that I can call from the base class to get the parameter
array.  That would lead to code of the following ilk, which seems odd
at the very least (if it will even work).

if (this instanceof IParamProvidingCallback) {
  IParamProvidingCallback ppcb = (IParamProvidingCallback) this;
  Obect[] params = ppcb.getParamArray();
  // use my param array to create an ExternalCallback
}

As to the duplication of hivemind configurations, there are 5 services
to which I am contributing an interceptor factory (by reference,
anyway) and there are significantly more pages that need protection. 
I'm not really worried about *that* duplication.

If I can get callbacks to work with the fix that Jesse said he'll look
into (thanks again) than I see this as a significant improvement to
what people would look at as the 'standard' approach to authentication
for tapestry frameworks.  It's a much, much better separation of
concerns.

I appreciate the input, but the base page approach just isn't workable.

As an aside, I looked into the interceptor provided by HiveUtils and
as far as I could tell, all it did was throw an exception, which
seemed fairly stupid -- general purpose, but stupid nonetheless.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to