You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Markus Joschko <ma...@gmail.com> on 2005/08/08 16:39:23 UTC

hivemind interceptor

Hi,
I'm just wondering if it's possible for an external library to front
all components with a proxy by configuration?

I saw some hivemind.xml which have promising names like e.g.
tapestry.enhance.xml
E.g. would it be possible to add a loginterceptor around
IComponent.renderBody calls?

Sorry if this question is totally stupid but I'm still fighting to
understand the way hivemind works and tapestry is internally wired.

Thanks,
 Markus

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Jesse Kuhnert <jk...@gmail.com>.
Yes that would be nice. I've tried asking questions to both users and
dev mailling lists here and have never really seen a response. Not
that they're obligated to or anything...I just know it's easier to
spend two minutes thinking about something when you have the entire
architecture in your head already rather than wading through and
guessing what the best path is...Heh...

j
On 8/10/05, Markus Joschko <ma...@gmail.com> wrote:
> I had a look at the responserenderer but this is IMO to coarse
> grained. As far as I can see the responserenderer simply triggers the
> render method of the requestcycle and has no chance to know which
> component is currently rendering and no possibility to intercept then.
> 
> The complete renderprocess of the components is somehow
> "selfcontained". Each component triggers the rendering of the
> contained components passing the markupwriter along. I can't detect a
> single point of control which would be able to intercept and e.g. is
> able to manipulate the markupwriter.
> 
> If it is not possible to add some logic at the beginning of the
> components renderComponent (not renderBody as I previously thought) I
> don't see a way to discard the part component as nice as it would be.
> 
> But maybe a more experienced tapestry developer could see a way out of this.
> 
> 
> markus
> 
> 
> > On 8/9/05, Jesse Kuhnert <jk...@gmail.com> wrote:
> > > Hello,
> > >
> > > Not meaning to jump into the middle of this thread, but in regard to
> > > the specific mention of tacos, I totally agree that the Part component
> > > needs to go, but that we might actually be able to fix it without
> > > injection....(Only if not possible..)
> > >
> > > I'm thinking that the ability to transparently replace the
> > > ResponseRenderer with our very own ajax response renderer might be
> > > able to do the trick. Theoretically at least.  Something along the
> > > lines of doing one of the service overrides so that the current
> > > ResponseRenderer:
> > > <service-point id="ResponseRenderer">
> > >     Renders the active page as the response.
> > >
> > >     <invoke-factory>
> > >       <construct class="impl.ResponseRendererImpl">
> > >         <set-service property="localeManager"
> > > service-id="RequestLocaleManager"/>
> > >         <set-object property="markupWriterSource"
> > > value="infrastructure:markupWriterSource"/>
> > >         <set-object property="webResponse" value="infrastructure:response"/>
> > >       </construct>
> > >     </invoke-factory>
> > >   </service-point>
> > > Would be replaced with something else, either a proxy class (bad for
> > > performance? ) or a delegate class..(Or enhanced class? don't care..)
> > >
> > > Once that was handled somehow, tacos could ditch the PartId concept
> > > and require only that the user specifies a Component ID, which is
> > > already handled by tapestry..Then our little ResponseRenderer can just
> > > check to see if a particular component's ID matches it's set of ajax
> > > re-render ids and hand it the appropriate IMarkupWriter depending on
> > > the outcome..
> > >
> > > This was my initial thought on how to handle it at least...
> > >
> > > jesse
> > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > I just played around with the tacos partial ajax support.
> > > > It now requires a special part component which knows if it should render or not.
> > > > If it would be possible to add interceptor like behaviour to
> > > > componentes, every component could get some logic injected to decide
> > > > if should render and which markupwriter to use.
> > > > This would make the partial service more flexible and the part
> > > > component unecessary.
> > > > It's not a mission critical use case but I hoped that it might be possible.
> > > >
> > > > OK, and in addition I wanted to learn a little bit more about the
> > > > internals of tapestry 4 and its hivemind usage.
> > > >
> > > >
> > > > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > Also, I'd like to know your use case for logging at this level of
> > > > > granularity.  BaseComponent can log renderComponent() already ... but
> > > > > you get a flood of output from all the different components (and
> > > > > pages) that extend from BaseComponent.
> > > > >
> > > > > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > Components are not services, it's a completely different model.
> > > > > >
> > > > > > Yes, you can get into conflicts between the different enhancement
> > > > > > workers.  Most enhancement workers are concerned with just a single
> > > > > > property (a method or pair of methods).  There's some ability to let
> > > > > > multiple workers assemble a single method (they're called "incomplete
> > > > > > methods") but there's a lot of constraints, such as always invoking
> > > > > > the super implementation (if it exists) first.
> > > > > >
> > > > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > I played around with the enhancementworkers and I can see one
> > > > > > > possibility to modify e.g the renderBody method more or less proxy
> > > > > > > like: using the addMethod method from the EnhancementOperation class
> > > > > > > to add a renderBody method to the subclass with a body like this:
> > > > > > >
> > > > > > > System.out.println("start");
> > > > > > > super.renderBody($$);
> > > > > > > System.out.println("end");
> > > > > > >
> > > > > > > This will work for the moment. But it's not very cooperative. What
> > > > > > > happens when a second enhancementworker also wants to modify the
> > > > > > > renderBody method? I think that's a last one wins situation or?
> > > > > > > Unless there is some javassist magic I don't know about, I think it is
> > > > > > > not possible to add a proxy behaviour to the components.
> > > > > > > Is there another way? I can't see a service point where I could add a
> > > > > > > logging interceptor to the components.
> > > > > > >
> > > > > > > thanks,
> > > > > > >  Markus
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > > > > > > > Is this the right place to go? Should I make an enhancementworker out
> > > > > > > > of the logging interceptor?
> > > > > > > > Is it possible to add a proxy with an enhancementworker (don't think
> > > > > > > > so as they are chained) or do I have to add the logging lines to the
> > > > > > > > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > > > > > > > But then I wonder how to add a line at the beginning and a line at the
> > > > > > > > end of the method?
> > > > > > > > Any help?
> > > > > > > > Thanks,
> > > > > > > >  Markus
> > > > > > > >
> > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > I never wanted to question the decision to use hivemind. For me it's
> > > > > > > > > always fun to learn new concepts. The only problem is to get started
> > > > > > > > > if you have a usecase in mind and no time to learn from the basics.
> > > > > > > > > So may be you can give me the starting point, how to handle the
> > > > > > > > > enhancer (just where to look to grasp the concepts)?
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > >  Markus
> > > > > > > > >
> > > > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > > > > > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > > > > > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > > > > > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > > > > > > > complex IoC container used to build frameworks.
> > > > > > > > > >
> > > > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > > > > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > > > > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > > > > > > > came out with this example ;-)
> > > > > > > > > > >
> > > > > > > > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > > > > > > > enhancer.
> > > > > > > > > > > Coming from springland I'm a little bit helpless currently....
> > > > > > > > > > >
> > > > > > > > > > > But nice to know that this flexibility is given in the framework.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > > > > > > > wanted that behaviour, you could add it quite easily.
> > > > > > > > > > > >
> > > > > > > > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > > > > > > > very, very odd.
> > > > > > > > > > > >
> > > > > > > > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > > > > > > > implementation that, say, checked against meta data to determine if
> > > > > > > > > > > > access to a page should be allowed.  That's reasonable.
> > > > > > > > > > > >
> > > > > > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > > > > > Hi,
> > > > > > > > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > > > > > > > all components with a proxy by configuration?
> > > > > > > > > > > > >
> > > > > > > > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > > > > > > > tapestry.enhance.xml
> > > > > > > > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > > > > > > > IComponent.renderBody calls?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > >  Markus
> > > > > > > > > > > > >
> > > > > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > Howard M. Lewis Ship
> > > > > > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > > > > > Creator, Jakarta HiveMind
> > > > > > > > > > > >
> > > > > > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > > > > > >
> > > > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Howard M. Lewis Ship
> > > > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > > > Creator, Jakarta HiveMind
> > > > > > > > > >
> > > > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > > > >
> > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Howard M. Lewis Ship
> > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > Creator, Jakarta Tapestry
> > > > > > Creator, Jakarta HiveMind
> > > > > >
> > > > > > Professional Tapestry training, mentoring, support
> > > > > > and project work.  http://howardlewisship.com
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Howard M. Lewis Ship
> > > > > Independent J2EE / Open-Source Java Consultant
> > > > > Creator, Jakarta Tapestry
> > > > > Creator, Jakarta HiveMind
> > > > >
> > > > > Professional Tapestry training, mentoring, support
> > > > > and project work.  http://howardlewisship.com
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
I had a look at the responserenderer but this is IMO to coarse
grained. As far as I can see the responserenderer simply triggers the
render method of the requestcycle and has no chance to know which
component is currently rendering and no possibility to intercept then.

The complete renderprocess of the components is somehow
"selfcontained". Each component triggers the rendering of the
contained components passing the markupwriter along. I can't detect a
single point of control which would be able to intercept and e.g. is
able to manipulate the markupwriter.

If it is not possible to add some logic at the beginning of the
components renderComponent (not renderBody as I previously thought) I
don't see a way to discard the part component as nice as it would be.

But maybe a more experienced tapestry developer could see a way out of this.


markus


> On 8/9/05, Jesse Kuhnert <jk...@gmail.com> wrote:
> > Hello,
> >
> > Not meaning to jump into the middle of this thread, but in regard to
> > the specific mention of tacos, I totally agree that the Part component
> > needs to go, but that we might actually be able to fix it without
> > injection....(Only if not possible..)
> >
> > I'm thinking that the ability to transparently replace the
> > ResponseRenderer with our very own ajax response renderer might be
> > able to do the trick. Theoretically at least.  Something along the
> > lines of doing one of the service overrides so that the current
> > ResponseRenderer:
> > <service-point id="ResponseRenderer">
> >     Renders the active page as the response.
> >
> >     <invoke-factory>
> >       <construct class="impl.ResponseRendererImpl">
> >         <set-service property="localeManager"
> > service-id="RequestLocaleManager"/>
> >         <set-object property="markupWriterSource"
> > value="infrastructure:markupWriterSource"/>
> >         <set-object property="webResponse" value="infrastructure:response"/>
> >       </construct>
> >     </invoke-factory>
> >   </service-point>
> > Would be replaced with something else, either a proxy class (bad for
> > performance? ) or a delegate class..(Or enhanced class? don't care..)
> >
> > Once that was handled somehow, tacos could ditch the PartId concept
> > and require only that the user specifies a Component ID, which is
> > already handled by tapestry..Then our little ResponseRenderer can just
> > check to see if a particular component's ID matches it's set of ajax
> > re-render ids and hand it the appropriate IMarkupWriter depending on
> > the outcome..
> >
> > This was my initial thought on how to handle it at least...
> >
> > jesse
> > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > I just played around with the tacos partial ajax support.
> > > It now requires a special part component which knows if it should render or not.
> > > If it would be possible to add interceptor like behaviour to
> > > componentes, every component could get some logic injected to decide
> > > if should render and which markupwriter to use.
> > > This would make the partial service more flexible and the part
> > > component unecessary.
> > > It's not a mission critical use case but I hoped that it might be possible.
> > >
> > > OK, and in addition I wanted to learn a little bit more about the
> > > internals of tapestry 4 and its hivemind usage.
> > >
> > >
> > > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > Also, I'd like to know your use case for logging at this level of
> > > > granularity.  BaseComponent can log renderComponent() already ... but
> > > > you get a flood of output from all the different components (and
> > > > pages) that extend from BaseComponent.
> > > >
> > > > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > Components are not services, it's a completely different model.
> > > > >
> > > > > Yes, you can get into conflicts between the different enhancement
> > > > > workers.  Most enhancement workers are concerned with just a single
> > > > > property (a method or pair of methods).  There's some ability to let
> > > > > multiple workers assemble a single method (they're called "incomplete
> > > > > methods") but there's a lot of constraints, such as always invoking
> > > > > the super implementation (if it exists) first.
> > > > >
> > > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > I played around with the enhancementworkers and I can see one
> > > > > > possibility to modify e.g the renderBody method more or less proxy
> > > > > > like: using the addMethod method from the EnhancementOperation class
> > > > > > to add a renderBody method to the subclass with a body like this:
> > > > > >
> > > > > > System.out.println("start");
> > > > > > super.renderBody($$);
> > > > > > System.out.println("end");
> > > > > >
> > > > > > This will work for the moment. But it's not very cooperative. What
> > > > > > happens when a second enhancementworker also wants to modify the
> > > > > > renderBody method? I think that's a last one wins situation or?
> > > > > > Unless there is some javassist magic I don't know about, I think it is
> > > > > > not possible to add a proxy behaviour to the components.
> > > > > > Is there another way? I can't see a service point where I could add a
> > > > > > logging interceptor to the components.
> > > > > >
> > > > > > thanks,
> > > > > >  Markus
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > > > > > > Is this the right place to go? Should I make an enhancementworker out
> > > > > > > of the logging interceptor?
> > > > > > > Is it possible to add a proxy with an enhancementworker (don't think
> > > > > > > so as they are chained) or do I have to add the logging lines to the
> > > > > > > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > > > > > > But then I wonder how to add a line at the beginning and a line at the
> > > > > > > end of the method?
> > > > > > > Any help?
> > > > > > > Thanks,
> > > > > > >  Markus
> > > > > > >
> > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > I never wanted to question the decision to use hivemind. For me it's
> > > > > > > > always fun to learn new concepts. The only problem is to get started
> > > > > > > > if you have a usecase in mind and no time to learn from the basics.
> > > > > > > > So may be you can give me the starting point, how to handle the
> > > > > > > > enhancer (just where to look to grasp the concepts)?
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > >  Markus
> > > > > > > >
> > > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > > > > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > > > > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > > > > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > > > > > > complex IoC container used to build frameworks.
> > > > > > > > >
> > > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > > > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > > > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > > > > > > came out with this example ;-)
> > > > > > > > > >
> > > > > > > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > > > > > > enhancer.
> > > > > > > > > > Coming from springland I'm a little bit helpless currently....
> > > > > > > > > >
> > > > > > > > > > But nice to know that this flexibility is given in the framework.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > > > > > > wanted that behaviour, you could add it quite easily.
> > > > > > > > > > >
> > > > > > > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > > > > > > very, very odd.
> > > > > > > > > > >
> > > > > > > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > > > > > > implementation that, say, checked against meta data to determine if
> > > > > > > > > > > access to a page should be allowed.  That's reasonable.
> > > > > > > > > > >
> > > > > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > > > > Hi,
> > > > > > > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > > > > > > all components with a proxy by configuration?
> > > > > > > > > > > >
> > > > > > > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > > > > > > tapestry.enhance.xml
> > > > > > > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > > > > > > IComponent.renderBody calls?
> > > > > > > > > > > >
> > > > > > > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks,
> > > > > > > > > > > >  Markus
> > > > > > > > > > > >
> > > > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > Howard M. Lewis Ship
> > > > > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > > > > Creator, Jakarta HiveMind
> > > > > > > > > > >
> > > > > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > > > > >
> > > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Howard M. Lewis Ship
> > > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > > Creator, Jakarta HiveMind
> > > > > > > > >
> > > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > > >
> > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Howard M. Lewis Ship
> > > > > Independent J2EE / Open-Source Java Consultant
> > > > > Creator, Jakarta Tapestry
> > > > > Creator, Jakarta HiveMind
> > > > >
> > > > > Professional Tapestry training, mentoring, support
> > > > > and project work.  http://howardlewisship.com
> > > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > > Independent J2EE / Open-Source Java Consultant
> > > > Creator, Jakarta Tapestry
> > > > Creator, Jakarta HiveMind
> > > >
> > > > Professional Tapestry training, mentoring, support
> > > > and project work.  http://howardlewisship.com
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
Hi Jesse,
you are welcome. Sounds reasonable and a lot cleaner than my thoughts.
Maybe I have some time tomorrow to look at this closer.
Does a proxy really add that much overhead? Because of my recent
attempts I read through some javassist docu in which is stated that
the overhead is minimal. The same might be true for the JDK proxies
(at for 1.5, not sure about the performance in 1.3)

Markus

On 8/9/05, Jesse Kuhnert <jk...@gmail.com> wrote:
> Hello,
> 
> Not meaning to jump into the middle of this thread, but in regard to
> the specific mention of tacos, I totally agree that the Part component
> needs to go, but that we might actually be able to fix it without
> injection....(Only if not possible..)
> 
> I'm thinking that the ability to transparently replace the
> ResponseRenderer with our very own ajax response renderer might be
> able to do the trick. Theoretically at least.  Something along the
> lines of doing one of the service overrides so that the current
> ResponseRenderer:
> <service-point id="ResponseRenderer">
>     Renders the active page as the response.
> 
>     <invoke-factory>
>       <construct class="impl.ResponseRendererImpl">
>         <set-service property="localeManager"
> service-id="RequestLocaleManager"/>
>         <set-object property="markupWriterSource"
> value="infrastructure:markupWriterSource"/>
>         <set-object property="webResponse" value="infrastructure:response"/>
>       </construct>
>     </invoke-factory>
>   </service-point>
> Would be replaced with something else, either a proxy class (bad for
> performance? ) or a delegate class..(Or enhanced class? don't care..)
> 
> Once that was handled somehow, tacos could ditch the PartId concept
> and require only that the user specifies a Component ID, which is
> already handled by tapestry..Then our little ResponseRenderer can just
> check to see if a particular component's ID matches it's set of ajax
> re-render ids and hand it the appropriate IMarkupWriter depending on
> the outcome..
> 
> This was my initial thought on how to handle it at least...
> 
> jesse
> On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > I just played around with the tacos partial ajax support.
> > It now requires a special part component which knows if it should render or not.
> > If it would be possible to add interceptor like behaviour to
> > componentes, every component could get some logic injected to decide
> > if should render and which markupwriter to use.
> > This would make the partial service more flexible and the part
> > component unecessary.
> > It's not a mission critical use case but I hoped that it might be possible.
> >
> > OK, and in addition I wanted to learn a little bit more about the
> > internals of tapestry 4 and its hivemind usage.
> >
> >
> > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > Also, I'd like to know your use case for logging at this level of
> > > granularity.  BaseComponent can log renderComponent() already ... but
> > > you get a flood of output from all the different components (and
> > > pages) that extend from BaseComponent.
> > >
> > > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > Components are not services, it's a completely different model.
> > > >
> > > > Yes, you can get into conflicts between the different enhancement
> > > > workers.  Most enhancement workers are concerned with just a single
> > > > property (a method or pair of methods).  There's some ability to let
> > > > multiple workers assemble a single method (they're called "incomplete
> > > > methods") but there's a lot of constraints, such as always invoking
> > > > the super implementation (if it exists) first.
> > > >
> > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > I played around with the enhancementworkers and I can see one
> > > > > possibility to modify e.g the renderBody method more or less proxy
> > > > > like: using the addMethod method from the EnhancementOperation class
> > > > > to add a renderBody method to the subclass with a body like this:
> > > > >
> > > > > System.out.println("start");
> > > > > super.renderBody($$);
> > > > > System.out.println("end");
> > > > >
> > > > > This will work for the moment. But it's not very cooperative. What
> > > > > happens when a second enhancementworker also wants to modify the
> > > > > renderBody method? I think that's a last one wins situation or?
> > > > > Unless there is some javassist magic I don't know about, I think it is
> > > > > not possible to add a proxy behaviour to the components.
> > > > > Is there another way? I can't see a service point where I could add a
> > > > > logging interceptor to the components.
> > > > >
> > > > > thanks,
> > > > >  Markus
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > > > > > Is this the right place to go? Should I make an enhancementworker out
> > > > > > of the logging interceptor?
> > > > > > Is it possible to add a proxy with an enhancementworker (don't think
> > > > > > so as they are chained) or do I have to add the logging lines to the
> > > > > > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > > > > > But then I wonder how to add a line at the beginning and a line at the
> > > > > > end of the method?
> > > > > > Any help?
> > > > > > Thanks,
> > > > > >  Markus
> > > > > >
> > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > I never wanted to question the decision to use hivemind. For me it's
> > > > > > > always fun to learn new concepts. The only problem is to get started
> > > > > > > if you have a usecase in mind and no time to learn from the basics.
> > > > > > > So may be you can give me the starting point, how to handle the
> > > > > > > enhancer (just where to look to grasp the concepts)?
> > > > > > >
> > > > > > > Thanks,
> > > > > > >  Markus
> > > > > > >
> > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > > > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > > > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > > > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > > > > > complex IoC container used to build frameworks.
> > > > > > > >
> > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > > > > > came out with this example ;-)
> > > > > > > > >
> > > > > > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > > > > > enhancer.
> > > > > > > > > Coming from springland I'm a little bit helpless currently....
> > > > > > > > >
> > > > > > > > > But nice to know that this flexibility is given in the framework.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > > > > > wanted that behaviour, you could add it quite easily.
> > > > > > > > > >
> > > > > > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > > > > > very, very odd.
> > > > > > > > > >
> > > > > > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > > > > > implementation that, say, checked against meta data to determine if
> > > > > > > > > > access to a page should be allowed.  That's reasonable.
> > > > > > > > > >
> > > > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > > > Hi,
> > > > > > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > > > > > all components with a proxy by configuration?
> > > > > > > > > > >
> > > > > > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > > > > > tapestry.enhance.xml
> > > > > > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > > > > > IComponent.renderBody calls?
> > > > > > > > > > >
> > > > > > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > >  Markus
> > > > > > > > > > >
> > > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Howard M. Lewis Ship
> > > > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > > > Creator, Jakarta HiveMind
> > > > > > > > > >
> > > > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > > > >
> > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Howard M. Lewis Ship
> > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > Creator, Jakarta HiveMind
> > > > > > > >
> > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > >
> > > > > > > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > > Independent J2EE / Open-Source Java Consultant
> > > > Creator, Jakarta Tapestry
> > > > Creator, Jakarta HiveMind
> > > >
> > > > Professional Tapestry training, mentoring, support
> > > > and project work.  http://howardlewisship.com
> > > >
> > >
> > >
> > > --
> > > Howard M. Lewis Ship
> > > Independent J2EE / Open-Source Java Consultant
> > > Creator, Jakarta Tapestry
> > > Creator, Jakarta HiveMind
> > >
> > > Professional Tapestry training, mentoring, support
> > > and project work.  http://howardlewisship.com
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Jesse Kuhnert <jk...@gmail.com>.
Hello,

Not meaning to jump into the middle of this thread, but in regard to
the specific mention of tacos, I totally agree that the Part component
needs to go, but that we might actually be able to fix it without
injection....(Only if not possible..)

I'm thinking that the ability to transparently replace the
ResponseRenderer with our very own ajax response renderer might be
able to do the trick. Theoretically at least.  Something along the
lines of doing one of the service overrides so that the current
ResponseRenderer:
<service-point id="ResponseRenderer">
    Renders the active page as the response.

    <invoke-factory>
      <construct class="impl.ResponseRendererImpl">
        <set-service property="localeManager"
service-id="RequestLocaleManager"/>
        <set-object property="markupWriterSource" 
value="infrastructure:markupWriterSource"/>
        <set-object property="webResponse" value="infrastructure:response"/>
      </construct>
    </invoke-factory>
  </service-point>
Would be replaced with something else, either a proxy class (bad for
performance? ) or a delegate class..(Or enhanced class? don't care..)

Once that was handled somehow, tacos could ditch the PartId concept
and require only that the user specifies a Component ID, which is
already handled by tapestry..Then our little ResponseRenderer can just
check to see if a particular component's ID matches it's set of ajax
re-render ids and hand it the appropriate IMarkupWriter depending on
the outcome..

This was my initial thought on how to handle it at least...

jesse
On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> I just played around with the tacos partial ajax support.
> It now requires a special part component which knows if it should render or not.
> If it would be possible to add interceptor like behaviour to
> componentes, every component could get some logic injected to decide
> if should render and which markupwriter to use.
> This would make the partial service more flexible and the part
> component unecessary.
> It's not a mission critical use case but I hoped that it might be possible.
> 
> OK, and in addition I wanted to learn a little bit more about the
> internals of tapestry 4 and its hivemind usage.
> 
> 
> On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > Also, I'd like to know your use case for logging at this level of
> > granularity.  BaseComponent can log renderComponent() already ... but
> > you get a flood of output from all the different components (and
> > pages) that extend from BaseComponent.
> >
> > On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > Components are not services, it's a completely different model.
> > >
> > > Yes, you can get into conflicts between the different enhancement
> > > workers.  Most enhancement workers are concerned with just a single
> > > property (a method or pair of methods).  There's some ability to let
> > > multiple workers assemble a single method (they're called "incomplete
> > > methods") but there's a lot of constraints, such as always invoking
> > > the super implementation (if it exists) first.
> > >
> > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > I played around with the enhancementworkers and I can see one
> > > > possibility to modify e.g the renderBody method more or less proxy
> > > > like: using the addMethod method from the EnhancementOperation class
> > > > to add a renderBody method to the subclass with a body like this:
> > > >
> > > > System.out.println("start");
> > > > super.renderBody($$);
> > > > System.out.println("end");
> > > >
> > > > This will work for the moment. But it's not very cooperative. What
> > > > happens when a second enhancementworker also wants to modify the
> > > > renderBody method? I think that's a last one wins situation or?
> > > > Unless there is some javassist magic I don't know about, I think it is
> > > > not possible to add a proxy behaviour to the components.
> > > > Is there another way? I can't see a service point where I could add a
> > > > logging interceptor to the components.
> > > >
> > > > thanks,
> > > >  Markus
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > > > > Is this the right place to go? Should I make an enhancementworker out
> > > > > of the logging interceptor?
> > > > > Is it possible to add a proxy with an enhancementworker (don't think
> > > > > so as they are chained) or do I have to add the logging lines to the
> > > > > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > > > > But then I wonder how to add a line at the beginning and a line at the
> > > > > end of the method?
> > > > > Any help?
> > > > > Thanks,
> > > > >  Markus
> > > > >
> > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > I never wanted to question the decision to use hivemind. For me it's
> > > > > > always fun to learn new concepts. The only problem is to get started
> > > > > > if you have a usecase in mind and no time to learn from the basics.
> > > > > > So may be you can give me the starting point, how to handle the
> > > > > > enhancer (just where to look to grasp the concepts)?
> > > > > >
> > > > > > Thanks,
> > > > > >  Markus
> > > > > >
> > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > > > > complex IoC container used to build frameworks.
> > > > > > >
> > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > > > > came out with this example ;-)
> > > > > > > >
> > > > > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > > > > enhancer.
> > > > > > > > Coming from springland I'm a little bit helpless currently....
> > > > > > > >
> > > > > > > > But nice to know that this flexibility is given in the framework.
> > > > > > > >
> > > > > > > >
> > > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > > > > wanted that behaviour, you could add it quite easily.
> > > > > > > > >
> > > > > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > > > > very, very odd.
> > > > > > > > >
> > > > > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > > > > implementation that, say, checked against meta data to determine if
> > > > > > > > > access to a page should be allowed.  That's reasonable.
> > > > > > > > >
> > > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > > Hi,
> > > > > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > > > > all components with a proxy by configuration?
> > > > > > > > > >
> > > > > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > > > > tapestry.enhance.xml
> > > > > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > > > > IComponent.renderBody calls?
> > > > > > > > > >
> > > > > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > >  Markus
> > > > > > > > > >
> > > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Howard M. Lewis Ship
> > > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > > Creator, Jakarta HiveMind
> > > > > > > > >
> > > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > > >
> > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Howard M. Lewis Ship
> > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > Creator, Jakarta Tapestry
> > > > > > > Creator, Jakarta HiveMind
> > > > > > >
> > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > and project work.  http://howardlewisship.com
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> > >
> > > --
> > > Howard M. Lewis Ship
> > > Independent J2EE / Open-Source Java Consultant
> > > Creator, Jakarta Tapestry
> > > Creator, Jakarta HiveMind
> > >
> > > Professional Tapestry training, mentoring, support
> > > and project work.  http://howardlewisship.com
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > Independent J2EE / Open-Source Java Consultant
> > Creator, Jakarta Tapestry
> > Creator, Jakarta HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work.  http://howardlewisship.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
I just played around with the tacos partial ajax support.
It now requires a special part component which knows if it should render or not.
If it would be possible to add interceptor like behaviour to
componentes, every component could get some logic injected to decide
if should render and which markupwriter to use.
This would make the partial service more flexible and the part
component unecessary.
It's not a mission critical use case but I hoped that it might be possible.

OK, and in addition I wanted to learn a little bit more about the
internals of tapestry 4 and its hivemind usage.


On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> Also, I'd like to know your use case for logging at this level of
> granularity.  BaseComponent can log renderComponent() already ... but
> you get a flood of output from all the different components (and
> pages) that extend from BaseComponent.
> 
> On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > Components are not services, it's a completely different model.
> >
> > Yes, you can get into conflicts between the different enhancement
> > workers.  Most enhancement workers are concerned with just a single
> > property (a method or pair of methods).  There's some ability to let
> > multiple workers assemble a single method (they're called "incomplete
> > methods") but there's a lot of constraints, such as always invoking
> > the super implementation (if it exists) first.
> >
> > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > I played around with the enhancementworkers and I can see one
> > > possibility to modify e.g the renderBody method more or less proxy
> > > like: using the addMethod method from the EnhancementOperation class
> > > to add a renderBody method to the subclass with a body like this:
> > >
> > > System.out.println("start");
> > > super.renderBody($$);
> > > System.out.println("end");
> > >
> > > This will work for the moment. But it's not very cooperative. What
> > > happens when a second enhancementworker also wants to modify the
> > > renderBody method? I think that's a last one wins situation or?
> > > Unless there is some javassist magic I don't know about, I think it is
> > > not possible to add a proxy behaviour to the components.
> > > Is there another way? I can't see a service point where I could add a
> > > logging interceptor to the components.
> > >
> > > thanks,
> > >  Markus
> > >
> > >
> > >
> > >
> > >
> > > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > > > Is this the right place to go? Should I make an enhancementworker out
> > > > of the logging interceptor?
> > > > Is it possible to add a proxy with an enhancementworker (don't think
> > > > so as they are chained) or do I have to add the logging lines to the
> > > > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > > > But then I wonder how to add a line at the beginning and a line at the
> > > > end of the method?
> > > > Any help?
> > > > Thanks,
> > > >  Markus
> > > >
> > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > I never wanted to question the decision to use hivemind. For me it's
> > > > > always fun to learn new concepts. The only problem is to get started
> > > > > if you have a usecase in mind and no time to learn from the basics.
> > > > > So may be you can give me the starting point, how to handle the
> > > > > enhancer (just where to look to grasp the concepts)?
> > > > >
> > > > > Thanks,
> > > > >  Markus
> > > > >
> > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > > > complex IoC container used to build frameworks.
> > > > > >
> > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > > > came out with this example ;-)
> > > > > > >
> > > > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > > > enhancer.
> > > > > > > Coming from springland I'm a little bit helpless currently....
> > > > > > >
> > > > > > > But nice to know that this flexibility is given in the framework.
> > > > > > >
> > > > > > >
> > > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > > > wanted that behaviour, you could add it quite easily.
> > > > > > > >
> > > > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > > > very, very odd.
> > > > > > > >
> > > > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > > > implementation that, say, checked against meta data to determine if
> > > > > > > > access to a page should be allowed.  That's reasonable.
> > > > > > > >
> > > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > > Hi,
> > > > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > > > all components with a proxy by configuration?
> > > > > > > > >
> > > > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > > > tapestry.enhance.xml
> > > > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > > > IComponent.renderBody calls?
> > > > > > > > >
> > > > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > >  Markus
> > > > > > > > >
> > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Howard M. Lewis Ship
> > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > Creator, Jakarta Tapestry
> > > > > > > > Creator, Jakarta HiveMind
> > > > > > > >
> > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > and project work.  http://howardlewisship.com
> > > > > > > >
> > > > > > > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Howard M. Lewis Ship
> > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > Creator, Jakarta Tapestry
> > > > > > Creator, Jakarta HiveMind
> > > > > >
> > > > > > Professional Tapestry training, mentoring, support
> > > > > > and project work.  http://howardlewisship.com
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > Independent J2EE / Open-Source Java Consultant
> > Creator, Jakarta Tapestry
> > Creator, Jakarta HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work.  http://howardlewisship.com
> >
> 
> 
> --
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Jakarta Tapestry
> Creator, Jakarta HiveMind
> 
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Howard Lewis Ship <hl...@gmail.com>.
Also, I'd like to know your use case for logging at this level of
granularity.  BaseComponent can log renderComponent() already ... but
you get a flood of output from all the different components (and
pages) that extend from BaseComponent.

On 8/9/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> Components are not services, it's a completely different model.
> 
> Yes, you can get into conflicts between the different enhancement
> workers.  Most enhancement workers are concerned with just a single
> property (a method or pair of methods).  There's some ability to let
> multiple workers assemble a single method (they're called "incomplete
> methods") but there's a lot of constraints, such as always invoking
> the super implementation (if it exists) first.
> 
> On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > I played around with the enhancementworkers and I can see one
> > possibility to modify e.g the renderBody method more or less proxy
> > like: using the addMethod method from the EnhancementOperation class
> > to add a renderBody method to the subclass with a body like this:
> >
> > System.out.println("start");
> > super.renderBody($$);
> > System.out.println("end");
> >
> > This will work for the moment. But it's not very cooperative. What
> > happens when a second enhancementworker also wants to modify the
> > renderBody method? I think that's a last one wins situation or?
> > Unless there is some javassist magic I don't know about, I think it is
> > not possible to add a proxy behaviour to the components.
> > Is there another way? I can't see a service point where I could add a
> > logging interceptor to the components.
> >
> > thanks,
> >  Markus
> >
> >
> >
> >
> >
> > On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > > Is this the right place to go? Should I make an enhancementworker out
> > > of the logging interceptor?
> > > Is it possible to add a proxy with an enhancementworker (don't think
> > > so as they are chained) or do I have to add the logging lines to the
> > > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > > But then I wonder how to add a line at the beginning and a line at the
> > > end of the method?
> > > Any help?
> > > Thanks,
> > >  Markus
> > >
> > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > I never wanted to question the decision to use hivemind. For me it's
> > > > always fun to learn new concepts. The only problem is to get started
> > > > if you have a usecase in mind and no time to learn from the basics.
> > > > So may be you can give me the starting point, how to handle the
> > > > enhancer (just where to look to grasp the concepts)?
> > > >
> > > > Thanks,
> > > >  Markus
> > > >
> > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > > complex IoC container used to build frameworks.
> > > > >
> > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > > came out with this example ;-)
> > > > > >
> > > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > > enhancer.
> > > > > > Coming from springland I'm a little bit helpless currently....
> > > > > >
> > > > > > But nice to know that this flexibility is given in the framework.
> > > > > >
> > > > > >
> > > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > > wanted that behaviour, you could add it quite easily.
> > > > > > >
> > > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > > very, very odd.
> > > > > > >
> > > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > > implementation that, say, checked against meta data to determine if
> > > > > > > access to a page should be allowed.  That's reasonable.
> > > > > > >
> > > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > > Hi,
> > > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > > all components with a proxy by configuration?
> > > > > > > >
> > > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > > tapestry.enhance.xml
> > > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > > IComponent.renderBody calls?
> > > > > > > >
> > > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > >  Markus
> > > > > > > >
> > > > > > > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Howard M. Lewis Ship
> > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > Creator, Jakarta Tapestry
> > > > > > > Creator, Jakarta HiveMind
> > > > > > >
> > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > and project work.  http://howardlewisship.com
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Howard M. Lewis Ship
> > > > > Independent J2EE / Open-Source Java Consultant
> > > > > Creator, Jakarta Tapestry
> > > > > Creator, Jakarta HiveMind
> > > > >
> > > > > Professional Tapestry training, mentoring, support
> > > > > and project work.  http://howardlewisship.com
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
> 
> 
> --
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Jakarta Tapestry
> Creator, Jakarta HiveMind
> 
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
> 


-- 
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Jakarta Tapestry
Creator, Jakarta HiveMind

Professional Tapestry training, mentoring, support
and project work.  http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Howard Lewis Ship <hl...@gmail.com>.
Components are not services, it's a completely different model.

Yes, you can get into conflicts between the different enhancement
workers.  Most enhancement workers are concerned with just a single
property (a method or pair of methods).  There's some ability to let
multiple workers assemble a single method (they're called "incomplete
methods") but there's a lot of constraints, such as always invoking
the super implementation (if it exists) first.

On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> I played around with the enhancementworkers and I can see one
> possibility to modify e.g the renderBody method more or less proxy
> like: using the addMethod method from the EnhancementOperation class
> to add a renderBody method to the subclass with a body like this:
> 
> System.out.println("start");
> super.renderBody($$);
> System.out.println("end");
> 
> This will work for the moment. But it's not very cooperative. What
> happens when a second enhancementworker also wants to modify the
> renderBody method? I think that's a last one wins situation or?
> Unless there is some javassist magic I don't know about, I think it is
> not possible to add a proxy behaviour to the components.
> Is there another way? I can't see a service point where I could add a
> logging interceptor to the components.
> 
> thanks,
>  Markus
> 
> 
> 
> 
> 
> On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> > OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> > Is this the right place to go? Should I make an enhancementworker out
> > of the logging interceptor?
> > Is it possible to add a proxy with an enhancementworker (don't think
> > so as they are chained) or do I have to add the logging lines to the
> > renderBody method (as e.g. seen in EnhancementOperationImpl)?
> > But then I wonder how to add a line at the beginning and a line at the
> > end of the method?
> > Any help?
> > Thanks,
> >  Markus
> >
> > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > I never wanted to question the decision to use hivemind. For me it's
> > > always fun to learn new concepts. The only problem is to get started
> > > if you have a usecase in mind and no time to learn from the basics.
> > > So may be you can give me the starting point, how to handle the
> > > enhancer (just where to look to grasp the concepts)?
> > >
> > > Thanks,
> > >  Markus
> > >
> > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > > and late binding that Spring simply can't express.  Spring's focus is
> > > > a simple IoC container used to build applications.  HiveMind is a more
> > > > complex IoC container used to build frameworks.
> > > >
> > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > > But even this is nonsense. I just had the logging interceptor example
> > > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > > came out with this example ;-)
> > > > >
> > > > > Maybe you can give me a starting point how to add or where to find the
> > > > > enhancer.
> > > > > Coming from springland I'm a little bit helpless currently....
> > > > >
> > > > > But nice to know that this flexibility is given in the framework.
> > > > >
> > > > >
> > > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > > Every page and component class is run through the enhancer, so if you
> > > > > > wanted that behaviour, you could add it quite easily.
> > > > > >
> > > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > > very, very odd.
> > > > > >
> > > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > > implementation that, say, checked against meta data to determine if
> > > > > > access to a page should be allowed.  That's reasonable.
> > > > > >
> > > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > > Hi,
> > > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > > all components with a proxy by configuration?
> > > > > > >
> > > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > > tapestry.enhance.xml
> > > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > > IComponent.renderBody calls?
> > > > > > >
> > > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > > >
> > > > > > > Thanks,
> > > > > > >  Markus
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Howard M. Lewis Ship
> > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > Creator, Jakarta Tapestry
> > > > > > Creator, Jakarta HiveMind
> > > > > >
> > > > > > Professional Tapestry training, mentoring, support
> > > > > > and project work.  http://howardlewisship.com
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > > Independent J2EE / Open-Source Java Consultant
> > > > Creator, Jakarta Tapestry
> > > > Creator, Jakarta HiveMind
> > > >
> > > > Professional Tapestry training, mentoring, support
> > > > and project work.  http://howardlewisship.com
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
> 


-- 
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Jakarta Tapestry
Creator, Jakarta HiveMind

Professional Tapestry training, mentoring, support
and project work.  http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
I played around with the enhancementworkers and I can see one
possibility to modify e.g the renderBody method more or less proxy
like: using the addMethod method from the EnhancementOperation class
to add a renderBody method to the subclass with a body like this:

System.out.println("start");
super.renderBody($$);
System.out.println("end");

This will work for the moment. But it's not very cooperative. What
happens when a second enhancementworker also wants to modify the
renderBody method? I think that's a last one wins situation or?
Unless there is some javassist magic I don't know about, I think it is
not possible to add a proxy behaviour to the components.
Is there another way? I can't see a service point where I could add a
logging interceptor to the components.

thanks,
 Markus





On 8/9/05, Markus Joschko <ma...@gmail.com> wrote:
> OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
> Is this the right place to go? Should I make an enhancementworker out
> of the logging interceptor?
> Is it possible to add a proxy with an enhancementworker (don't think
> so as they are chained) or do I have to add the logging lines to the
> renderBody method (as e.g. seen in EnhancementOperationImpl)?
> But then I wonder how to add a line at the beginning and a line at the
> end of the method?
> Any help?
> Thanks,
>  Markus
> 
> On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > I never wanted to question the decision to use hivemind. For me it's
> > always fun to learn new concepts. The only problem is to get started
> > if you have a usecase in mind and no time to learn from the basics.
> > So may be you can give me the starting point, how to handle the
> > enhancer (just where to look to grasp the concepts)?
> >
> > Thanks,
> >  Markus
> >
> > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > > stuff like this ... HiveMind provides a particular kind of flexibility
> > > and late binding that Spring simply can't express.  Spring's focus is
> > > a simple IoC container used to build applications.  HiveMind is a more
> > > complex IoC container used to build frameworks.
> > >
> > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > > But even this is nonsense. I just had the logging interceptor example
> > > > from hivemind and the IComponent interface open in browser and IDE and
> > > > came out with this example ;-)
> > > >
> > > > Maybe you can give me a starting point how to add or where to find the
> > > > enhancer.
> > > > Coming from springland I'm a little bit helpless currently....
> > > >
> > > > But nice to know that this flexibility is given in the framework.
> > > >
> > > >
> > > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > > Every page and component class is run through the enhancer, so if you
> > > > > wanted that behaviour, you could add it quite easily.
> > > > >
> > > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > > very, very odd.
> > > > >
> > > > > I *could* see adding PageValidationListener to your pages, with an
> > > > > implementation that, say, checked against meta data to determine if
> > > > > access to a page should be allowed.  That's reasonable.
> > > > >
> > > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > > Hi,
> > > > > > I'm just wondering if it's possible for an external library to front
> > > > > > all components with a proxy by configuration?
> > > > > >
> > > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > > tapestry.enhance.xml
> > > > > > E.g. would it be possible to add a loginterceptor around
> > > > > > IComponent.renderBody calls?
> > > > > >
> > > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > > understand the way hivemind works and tapestry is internally wired.
> > > > > >
> > > > > > Thanks,
> > > > > >  Markus
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Howard M. Lewis Ship
> > > > > Independent J2EE / Open-Source Java Consultant
> > > > > Creator, Jakarta Tapestry
> > > > > Creator, Jakarta HiveMind
> > > > >
> > > > > Professional Tapestry training, mentoring, support
> > > > > and project work.  http://howardlewisship.com
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> > >
> > > --
> > > Howard M. Lewis Ship
> > > Independent J2EE / Open-Source Java Consultant
> > > Creator, Jakarta Tapestry
> > > Creator, Jakarta HiveMind
> > >
> > > Professional Tapestry training, mentoring, support
> > > and project work.  http://howardlewisship.com
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
OK, I had a look at the ComponentConstructorImpl and the EnhancementWorkers.
Is this the right place to go? Should I make an enhancementworker out
of the logging interceptor?
Is it possible to add a proxy with an enhancementworker (don't think
so as they are chained) or do I have to add the logging lines to the
renderBody method (as e.g. seen in EnhancementOperationImpl)?
But then I wonder how to add a line at the beginning and a line at the
end of the method?
Any help?
Thanks,
 Markus

On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> I never wanted to question the decision to use hivemind. For me it's
> always fun to learn new concepts. The only problem is to get started
> if you have a usecase in mind and no time to learn from the basics.
> So may be you can give me the starting point, how to handle the
> enhancer (just where to look to grasp the concepts)?
> 
> Thanks,
>  Markus
> 
> On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > People keep asking me "why HiveMind? why not Spring?"  It's because of
> > stuff like this ... HiveMind provides a particular kind of flexibility
> > and late binding that Spring simply can't express.  Spring's focus is
> > a simple IoC container used to build applications.  HiveMind is a more
> > complex IoC container used to build frameworks.
> >
> > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > > But even this is nonsense. I just had the logging interceptor example
> > > from hivemind and the IComponent interface open in browser and IDE and
> > > came out with this example ;-)
> > >
> > > Maybe you can give me a starting point how to add or where to find the
> > > enhancer.
> > > Coming from springland I'm a little bit helpless currently....
> > >
> > > But nice to know that this flexibility is given in the framework.
> > >
> > >
> > > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > > Every page and component class is run through the enhancer, so if you
> > > > wanted that behaviour, you could add it quite easily.
> > > >
> > > > Did you mean "login interceptor" around renderBody()?  That seems
> > > > very, very odd.
> > > >
> > > > I *could* see adding PageValidationListener to your pages, with an
> > > > implementation that, say, checked against meta data to determine if
> > > > access to a page should be allowed.  That's reasonable.
> > > >
> > > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > > Hi,
> > > > > I'm just wondering if it's possible for an external library to front
> > > > > all components with a proxy by configuration?
> > > > >
> > > > > I saw some hivemind.xml which have promising names like e.g.
> > > > > tapestry.enhance.xml
> > > > > E.g. would it be possible to add a loginterceptor around
> > > > > IComponent.renderBody calls?
> > > > >
> > > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > > understand the way hivemind works and tapestry is internally wired.
> > > > >
> > > > > Thanks,
> > > > >  Markus
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > > Independent J2EE / Open-Source Java Consultant
> > > > Creator, Jakarta Tapestry
> > > > Creator, Jakarta HiveMind
> > > >
> > > > Professional Tapestry training, mentoring, support
> > > > and project work.  http://howardlewisship.com
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > Independent J2EE / Open-Source Java Consultant
> > Creator, Jakarta Tapestry
> > Creator, Jakarta HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work.  http://howardlewisship.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
I never wanted to question the decision to use hivemind. For me it's
always fun to learn new concepts. The only problem is to get started
if you have a usecase in mind and no time to learn from the basics.
So may be you can give me the starting point, how to handle the
enhancer (just where to look to grasp the concepts)?

Thanks,
 Markus

On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> People keep asking me "why HiveMind? why not Spring?"  It's because of
> stuff like this ... HiveMind provides a particular kind of flexibility
> and late binding that Spring simply can't express.  Spring's focus is
> a simple IoC container used to build applications.  HiveMind is a more
> complex IoC container used to build frameworks.
> 
> On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> > But even this is nonsense. I just had the logging interceptor example
> > from hivemind and the IComponent interface open in browser and IDE and
> > came out with this example ;-)
> >
> > Maybe you can give me a starting point how to add or where to find the
> > enhancer.
> > Coming from springland I'm a little bit helpless currently....
> >
> > But nice to know that this flexibility is given in the framework.
> >
> >
> > On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > > Every page and component class is run through the enhancer, so if you
> > > wanted that behaviour, you could add it quite easily.
> > >
> > > Did you mean "login interceptor" around renderBody()?  That seems
> > > very, very odd.
> > >
> > > I *could* see adding PageValidationListener to your pages, with an
> > > implementation that, say, checked against meta data to determine if
> > > access to a page should be allowed.  That's reasonable.
> > >
> > > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > > Hi,
> > > > I'm just wondering if it's possible for an external library to front
> > > > all components with a proxy by configuration?
> > > >
> > > > I saw some hivemind.xml which have promising names like e.g.
> > > > tapestry.enhance.xml
> > > > E.g. would it be possible to add a loginterceptor around
> > > > IComponent.renderBody calls?
> > > >
> > > > Sorry if this question is totally stupid but I'm still fighting to
> > > > understand the way hivemind works and tapestry is internally wired.
> > > >
> > > > Thanks,
> > > >  Markus
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > > >
> > > >
> > >
> > >
> > > --
> > > Howard M. Lewis Ship
> > > Independent J2EE / Open-Source Java Consultant
> > > Creator, Jakarta Tapestry
> > > Creator, Jakarta HiveMind
> > >
> > > Professional Tapestry training, mentoring, support
> > > and project work.  http://howardlewisship.com
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
> 
> 
> --
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Jakarta Tapestry
> Creator, Jakarta HiveMind
> 
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Howard Lewis Ship <hl...@gmail.com>.
People keep asking me "why HiveMind? why not Spring?"  It's because of
stuff like this ... HiveMind provides a particular kind of flexibility
and late binding that Spring simply can't express.  Spring's focus is
a simple IoC container used to build applications.  HiveMind is a more
complex IoC container used to build frameworks.

On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
> But even this is nonsense. I just had the logging interceptor example
> from hivemind and the IComponent interface open in browser and IDE and
> came out with this example ;-)
> 
> Maybe you can give me a starting point how to add or where to find the
> enhancer.
> Coming from springland I'm a little bit helpless currently....
> 
> But nice to know that this flexibility is given in the framework.
> 
> 
> On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> > Every page and component class is run through the enhancer, so if you
> > wanted that behaviour, you could add it quite easily.
> >
> > Did you mean "login interceptor" around renderBody()?  That seems
> > very, very odd.
> >
> > I *could* see adding PageValidationListener to your pages, with an
> > implementation that, say, checked against meta data to determine if
> > access to a page should be allowed.  That's reasonable.
> >
> > On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > > Hi,
> > > I'm just wondering if it's possible for an external library to front
> > > all components with a proxy by configuration?
> > >
> > > I saw some hivemind.xml which have promising names like e.g.
> > > tapestry.enhance.xml
> > > E.g. would it be possible to add a loginterceptor around
> > > IComponent.renderBody calls?
> > >
> > > Sorry if this question is totally stupid but I'm still fighting to
> > > understand the way hivemind works and tapestry is internally wired.
> > >
> > > Thanks,
> > >  Markus
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> > >
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > Independent J2EE / Open-Source Java Consultant
> > Creator, Jakarta Tapestry
> > Creator, Jakarta HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work.  http://howardlewisship.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
> 


-- 
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Jakarta Tapestry
Creator, Jakarta HiveMind

Professional Tapestry training, mentoring, support
and project work.  http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Markus Joschko <ma...@gmail.com>.
Oh, sorry, yes thats complete nonsense. I meant logging interceptor.
But even this is nonsense. I just had the logging interceptor example
from hivemind and the IComponent interface open in browser and IDE and
came out with this example ;-)

Maybe you can give me a starting point how to add or where to find the
enhancer.
Coming from springland I'm a little bit helpless currently....

But nice to know that this flexibility is given in the framework.


On 8/8/05, Howard Lewis Ship <hl...@gmail.com> wrote:
> Every page and component class is run through the enhancer, so if you
> wanted that behaviour, you could add it quite easily.
> 
> Did you mean "login interceptor" around renderBody()?  That seems
> very, very odd.
> 
> I *could* see adding PageValidationListener to your pages, with an
> implementation that, say, checked against meta data to determine if
> access to a page should be allowed.  That's reasonable.
> 
> On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> > Hi,
> > I'm just wondering if it's possible for an external library to front
> > all components with a proxy by configuration?
> >
> > I saw some hivemind.xml which have promising names like e.g.
> > tapestry.enhance.xml
> > E.g. would it be possible to add a loginterceptor around
> > IComponent.renderBody calls?
> >
> > Sorry if this question is totally stupid but I'm still fighting to
> > understand the way hivemind works and tapestry is internally wired.
> >
> > Thanks,
> >  Markus
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> >
> >
> 
> 
> --
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Jakarta Tapestry
> Creator, Jakarta HiveMind
> 
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Re: hivemind interceptor

Posted by Howard Lewis Ship <hl...@gmail.com>.
Every page and component class is run through the enhancer, so if you
wanted that behaviour, you could add it quite easily.

Did you mean "login interceptor" around renderBody()?  That seems
very, very odd.

I *could* see adding PageValidationListener to your pages, with an
implementation that, say, checked against meta data to determine if
access to a page should be allowed.  That's reasonable.

On 8/8/05, Markus Joschko <ma...@gmail.com> wrote:
> Hi,
> I'm just wondering if it's possible for an external library to front
> all components with a proxy by configuration?
> 
> I saw some hivemind.xml which have promising names like e.g.
> tapestry.enhance.xml
> E.g. would it be possible to add a loginterceptor around
> IComponent.renderBody calls?
> 
> Sorry if this question is totally stupid but I'm still fighting to
> understand the way hivemind works and tapestry is internally wired.
> 
> Thanks,
>  Markus
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 
> 


-- 
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Jakarta Tapestry
Creator, Jakarta HiveMind

Professional Tapestry training, mentoring, support
and project work.  http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org