Why not something like...
public class BasePageImplementation extends BasePage {
private Log logger;
public BasePageImplementation() {
// Since all page classes are inherited Tapestry generated classes
// we use the superclass to initialize the log
logger = LogFactory.getLog(this.getClass().getSuperclass());
}
/**
* @return Returns the logger.
*/
public Log getLogger() {
return logger;
}
}
Works for me. :-)
On 4/9/06, Mark <[EMAIL PROTECTED]> wrote:
>
> Yes, that's what I have done.
> But still - let's assume I have something like
>
> public abstract class LogAwareBasePage extends BasePage implements
> PageBeginRenderListener {
> Log log;
> public void setLog(Log log) { ... }
> public Log getLog() { ... }
> }
>
> I still don't have the log property initialized.
> Sure, I could do this:
>
> public abstract class LogAwareBasePage extends BasePage implements
> PageBeginRenderListener {
> Log log = new SomeClassThatImplementsLog("param1", "param2", ...);
> public void setLog(Log log) { ... }
> public Log getLog() { ... }
> }
>
> But this is not runtime-configurable...
>
>
> Or I could do it in my .page file:
>
> <property name="log">ognl:Some OGNL expression</property>
>
> So I could plug it in the .page files, but that would have to be done in
> each .page file again and again. So if I want to switch the Log
> implementation, at least I don't have to modify my java code, but I will
> have to change every single .page file.
>
> So I am hoping that I could somehow use Hivemind instead to configure
> the injection of the Log implementation, but I don't know how.
>
>
> Also, as an additional challenge: My application architecture is using
> Spring for the configuration and property injection on all the other
> layers, so ideally, I would like to use Spring to initialize the log
> property, so that I do not have to define all the beans twice (once in
> Spring and once in Hivemind). Maybe the bridge from the tapestry-spring
> project can be used for that???
>
> Thanks for the help,
>
> MARK
>
>
>
>
>
>
>
> Sam Gendler wrote:
> > Define a MyBasePage which has all the properties you want, and then
> > make all your pages inherit from that.
> >
> > --sam
> >
> >
> > On 4/9/06, Mark <[EMAIL PROTECTED]> wrote:
> >
> >> Hello,
> >>
> >> is there a way to "globally" inject certain properties in a large
> number
> >> of pages, without having to do it in each page specification file?
> >> For example, I expect all my pages to have a "log" Property which is an
> >> implementation of the commons-logging Log interface.
> >> But I want to plug the particular implementation of the Log interface
> >> using injection at runtime, just like all the other page properties are
> >> plugged at runtime based on the .page specification file as well.
> >> However, I don't want to have to include the same property definition
> in
> >> every single page-descriptor, since it is not very well maintainable.
> >> Imagine I have 100 pages and now want to change the implementation of
> >> the Log interface - I have to change 100 different .page files.
> >>
> >> So is there a way to do this in a better way?
> >>
> >> Thanks,
> >>
> >> MARK
> >>
> >> ---------------------------------------------------------------------
> >> 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]
>
>
--
Pedro Viegas