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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> > > > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > 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: [EMAIL PROTECTED]
> > > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > 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: [EMAIL PROTECTED]
> > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > 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: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]