On 13.03.2005 18:22:20 Victor Mote wrote:
> Jeremias Maerki wrote:
> 
> > > When you add vector (EPS and SVG)
> > > into the mix to make a complete Graphic package, there are 
> > some other 
> > > things.
> > 
> > Hmm, not so much. I think the implementation in FOP CVS HEAD 
> > is already a good start. As I said, it still needs some 
> 
> OK. I understand you to be saying here that you could take the FOP CVS HEAD
> graphics code, and extract an interface from it that would not expose EPS-
> or SVG-specific items in any way. That is definitely worth looking at, and
> I'll try to do so within the next few days.
> 
> > is already a good start. As I said, it still needs some 
> > improvements but mainly in other parts than this.
> 
> You are talking here about implementation-specific things, right? IOW,
> FOray's implementation vs. FOP HEAD's implementation? If FOP has made
> improvements to the Graphic system, then I certainly understand that those
> would need to be folded into FOray code before FOP would consider using the
> FOrayGraphic package. But those aren't related to the aXSL interface, right?

Right.

> > > The loggers in the servers are an oversight, and I have 
> > removed them.
> > > However, I don't think there is a way to get rid of the logger in 
> > > FontConsumer. Because FontServer can serve multiple documents at a 
> > > time, it allows FontConsumer to tell it what logger instance to use.
> > 
> > The Avalon way is IoC (Inversion Of Control). A FontServer 
> > implementation would simply implement the LogEnabled 
> > interface, as would the FontConsumer. In FontServer you can 
> > set the Logger on a FontConsumer through 
> > ContainerUtil.enableLogging. If a FontConsumer doesn't 
> > support LogEnabled this step is automatically skipped. The 
> > result: all this is hidden in the implementation and does not 
> > have to be exposed in the API specification.
> > 
> > http://excalibur.apache.org/apidocs/org/apache/avalon/framewor
> > k/container/ContainerUtil.html
> 
> I'm confused here. FontServer doesn't *ever* "set the Logger on a
> FontConsumer." The Logger instance that FontConsumer provides is an optional
> feature that allows the FontConsumer to control where logging messages that
> are specific to its document go. FontServer doesn't have to use it, and
> FontConsumer can simply return null if it doesn't want that feature. IOW,
> the control *is* inverted. (Remember that FontConsumer is an interface for
> the *client* side and that one FontServer can server many FontConsumers).
> But to provide that feature at all, how can FontConsumer tell FontServer
> what logger to use without telling it what logger to use? That seems like a
> necessary binding for that feature.

Now I'm confused, too. I don't know what "can simply return null if it
doesn't want that feature" means. Anyway, this is getting too much
off-topic for this list, but we can continue off-list if you want.

Anyway, if an object gets a logger from another object via a call to
a getLogger() method, then it's not IoC anymore.

> Now, if the real quibble here is about Avalon vs. Commons, that can probably
> be resolved. I'm not up-to-speed on the issues there. And also it wouldn't
> be too hard to provide both.

No, it's not, as long as logging is not part of the API specification.


Jeremias Maerki

Reply via email to