> >>>While migrating cocoon to LogEnabled I realized that not even > >>>Excalibur is LogEnabled yet. So question is how to do a smooth > >>>transition? Anyone a migration plan yet? (IMHO there should be > >>>one before deprecating anything) > >>> > >> > >>There is. Current CVS can handle LogEnabled Components--but it would > >>be backwards incompatible to change the interfaces that > >>ExcaliburComponentManager implements--especially since it is directly > >>manipulated by Cocoon and other Containers. > >> > > > > AFAI can see the current ExcaliburComponentManager still extends > > AbstractLoggable instead of AbstractLogEnabled. So what about > > a wrapper that wrapps around the ExcaliburComponentManager to > > have a LogEnabled version of it? Cocoon (or other migrating projects) > > can then use the new LogEnabled interface. > > When migration is finished we can remove this iterim solution. > > > In order for this to work, you will need access to a LogKit logger for > legacy components. It is *Impossible* to get a LogKit Logger from an > Avalon Logger wrapper. Really, unless you can come up with a more > elegant solution, I don't think that will work.
Hm... I don't understand where there is the problem. (dispite the fact that it's ugly ;) class ExcaliburComponentManager extends AbstractLoggable { // leave it as is } class LogEnabledExcaliburComponentManager extends AbstractLogEnabled implements .... or class LogEnabledExcaliburComponentManager extends ..someclass.. implements LogEnabled, .... { final private ExcaliburComponentManager cm; final private org.apache.avalon.framework.logger.Logger logger; // wrap/map all methods to the cm // except enabledLogging() final public void enabledLogging(org.apache.avalon.framework.logger.Logger logger) { if (logger != null) this.logger = logger } // except getLogger() final public org.apache.avalon.framework.logger.Logger getLogger() { return(logger); } } This way old systems will use the old ExcaliburComponentManager, new systems the new LogEnabledExcaliburComponentManager. When everyone has migrated we could make ExcaliburComponentManager extend AbstractLoggable. > > [snip] > > > > ...sounds cool - do you propose to wait migrating to LogEnabled 'til the > > rewriting is finished? > > > For your components, convert. The ExcaliburComponentManager in CVS can handle > the mixture--allowing for Legacy Components. For the root Cocoon object, > don't convert just yet. Hm... but how do I get a org.apache.avalon.framework.logger.Logger to enabled logging on LogEnabled components when the old ExcaliburComponentManager can only give the org.apache.log.Logger?! -- Torsten -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>