On Tue, 4 Feb 2003, J.Pietschmann wrote:
> Stephan Michels wrote:
> > And why do you not use org.apache.excalibur.source.Source instead, and use
> > org.apache.excalibur.xml.dom.DOMParser and
> > org.apache.excalibur.xml.sax.SAXParser to get the content for you
> > StreamSource or SAXSource?
>
> Because I can't find any of the above in my Excalibur source
> distribution. You are invited to add your proposal to the wiki,
> with proper references of course.
I never used Wiki, so I don't want to break something.
Some points I want to propose are
1. Hide implementation behing a universal interface
public interface FOProcessor {
public final static String ROLE = "org.apache.fop.api.FOProcessor";
public void render(String source,
org.apache.fop.api.Renderer renderer)
throws FOPException {
}
public void setRenderer(org.apache.fop.api.Renderer renderer) {
}
public void setImageResolver(ImageResolver resolver) {
}
public ImageResolver getImageResolver() {
}
public void setFontResolver(FontResolver resolver) {
}
public FontResolver getFontResolver() {
}
}
public class FOProcessorImpl implements FOProcessor, Composable,
Configurable, LogEnabled{
public void compose(ComponentManager cm) {
this.sourceresolver = cm.lookup(SourceResolver.ROLE);
}
public void enableLogger(Logger logger) {
this.logger = logger;
}
public Font getFont(String font) {
}
public FontResolver getFontResolver() {
}
}
public class FOProcessorImpl implements FOProcessor, Composable,
Configurable, LogEnabled{
public void compose(ComponentManager cm) {
this.sourceresolver = cm.lookup(SourceResolver.ROLE);
}
public void enableLogger(Logger logger) {
this.logger = logger;
}
public Font getFont(String font) {
String uri = fontresolver.getURI(font);
Source source = sourceresolver.resolveURI(uri);
InputStream in = source.getInputStream();
[...]
}
}
This will also prevents you make dependencies to the Avlon project.
Which XML presentation do you prefer internally SAX/DOM? You will have
a problem if you will support both representations, IHMO. Following
solution could work..
ContentHandler =
(ContentHandler)FOProcessorFactory.createSAXFOProcessor();
DOMFOProcessor = FOProcessorFactory.createDOMFOProcessor();
My two cents, Stephan Michels.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]