spepping 2004/07/09 10:27:12 Modified: src/java/org/apache/fop/apps CommandLineOptions.java FOUserAgent.java src/java/org/apache/fop/area RenderPagesModel.java src/java/org/apache/fop/fonts FontSetup.java src/java/org/apache/fop/pdf PDFFilterList.java src/java/org/apache/fop/render AbstractRenderer.java src/java/org/apache/fop/render/pdf PDFRenderer.java src/java/org/apache/fop/render/ps PSRenderer.java Log: Implementing user configuration file. Adding debug logging for user configuration, user PDF filters and user fonts. Adding reporting of mime type to renderers. Revision Changes Path 1.24 +36 -1 xml-fop/src/java/org/apache/fop/apps/CommandLineOptions.java Index: CommandLineOptions.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/CommandLineOptions.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- CommandLineOptions.java 26 Jun 2004 19:37:13 -0000 1.23 +++ CommandLineOptions.java 9 Jul 2004 17:27:12 -0000 1.24 @@ -20,15 +20,26 @@ // java import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; import java.util.Locale; import java.util.Vector; import org.apache.fop.fo.Constants; +// commons logging import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.impl.SimpleLog; +// SAX +import org.xml.sax.XMLReader; +import org.xml.sax.SAXException; + +// avalon configuration +import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; + /** * Options parses the commandline arguments */ @@ -66,7 +77,7 @@ * @throws FileNotFoundException if an input file wasn't found. */ public CommandLineOptions(String[] args) - throws FOPException, FileNotFoundException { + throws FOPException, FileNotFoundException, IOException { log = LogFactory.getLog("FOP"); @@ -81,6 +92,7 @@ dumpConfiguration(); } checkSettings(); + createUserConfig(); } } catch (FOPException e) { printUsage(); @@ -412,6 +424,29 @@ } } // end checkSettings + + /** + * Create the user configuration. + * @throws FOPException if creating the user configuration fails + * @throws IOException + */ + private void createUserConfig() throws FOPException, IOException { + if (userConfigFile == null) { + return; + } + XMLReader parser = FOFileHandler.createParser(); + DefaultConfigurationBuilder configBuilder + = new DefaultConfigurationBuilder(parser); + Configuration userConfig = null; + try { + userConfig = configBuilder.buildFromFile(userConfigFile); + } catch (SAXException e) { + throw new FOPException(e); + } catch (ConfigurationException e) { + throw new FOPException(e); + } + foUserAgent.setUserConfig(userConfig); + } /** * @return the type chosen renderer 1.13 +55 -2 xml-fop/src/java/org/apache/fop/apps/FOUserAgent.java Index: FOUserAgent.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/FOUserAgent.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- FOUserAgent.java 27 Jun 2004 13:29:32 -0000 1.12 +++ FOUserAgent.java 9 Jul 2004 17:27:12 -0000 1.13 @@ -25,6 +25,14 @@ import java.io.IOException; import java.io.InputStream; +// avalon configuration +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; + +// commons logging +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + // FOP import org.apache.fop.pdf.PDFEncryptionParams; import org.apache.fop.render.Renderer; @@ -61,7 +69,10 @@ private HashMap rendererOptions = new java.util.HashMap(); private InputHandler inputHandler = null; private Renderer rendererOverride = null; - + /* user configuration */ + private Configuration userConfig = null; + private Log log = LogFactory.getLog("FOP"); + /** Producer: Metadata element for the system/software that produces * the document. (Some renderers can store this in the document.) */ @@ -164,6 +175,48 @@ */ public HashMap getRendererOptions() { return rendererOptions; + } + + /** + * Set the user configuration. + * @return the user configuration + */ + public void setUserConfig(Configuration userConfig) { + this.userConfig = userConfig; + } + + /** + * Get the user configuration. + * @return the user configuration + */ + public Configuration getUserConfig() { + return userConfig; + } + + public Configuration getUserRendererConfig (String mimeType) { + + if (userConfig == null || mimeType == null) { + return null; + } + + Configuration userRendererConfig = null; + + Configuration[] cfgs + = userConfig.getChild("renderers").getChildren("renderer"); + for (int i = 0; i < cfgs.length; ++i) { + Configuration cfg = cfgs[i]; + try { + if (cfg.getAttribute("mime").equals(mimeType)) { + userRendererConfig = cfg; + break; + } + } catch (ConfigurationException e) { + // silently pass over configurations without mime type + } + } + log.debug((userRendererConfig==null ? "No u" : "U") + + "ser configuration found for MIME type " + mimeType); + return userRendererConfig; } /** 1.4 +24 -5 xml-fop/src/java/org/apache/fop/area/RenderPagesModel.java Index: RenderPagesModel.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/RenderPagesModel.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- RenderPagesModel.java 7 Jul 2004 01:51:50 -0000 1.3 +++ RenderPagesModel.java 9 Jul 2004 17:27:12 -0000 1.4 @@ -27,12 +27,17 @@ // XML import org.xml.sax.SAXException; +// avalon configuration +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; + // FOP import org.apache.fop.apps.FOPException; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.fo.Constants; import org.apache.fop.fonts.FontInfo; import org.apache.fop.render.Renderer; +import org.apache.fop.render.AbstractRenderer; /** * This uses the store pages model to store the pages @@ -69,8 +74,22 @@ if (userAgent.getRendererOverride() != null) { renderer = userAgent.getRendererOverride(); } else { - renderer = createRenderer(renderType); - renderer.setUserAgent(userAgent); + AbstractRenderer rend = createRenderer(renderType); + rend.setUserAgent(userAgent); + String mimeType = rend.getMimeType(); + Configuration userRendererConfig = null; + if (mimeType != null) { + userRendererConfig + = userAgent.getUserRendererConfig(mimeType); + } + if (userRendererConfig != null) { + try { + rend.configure(userRendererConfig); + } catch (ConfigurationException e) { + throw new FOPException(e); + } + } + renderer = rend; } try { @@ -87,12 +106,12 @@ } /** - * Creates a Renderer object based on render-type desired + * Creates an AbstractRenderer object based on render-type desired * @param renderType the type of renderer to use - * @return Renderer the new Renderer instance + * @return AbstractRenderer the new Renderer instance * @throws IllegalArgumentException if an unsupported renderer type was requested */ - private Renderer createRenderer(int renderType) throws IllegalArgumentException { + private AbstractRenderer createRenderer(int renderType) throws IllegalArgumentException { switch (renderType) { case Constants.RENDER_PDF: 1.6 +24 -2 xml-fop/src/java/org/apache/fop/fonts/FontSetup.java Index: FontSetup.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fonts/FontSetup.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FontSetup.java 22 Apr 2004 21:56:09 -0000 1.5 +++ FontSetup.java 9 Jul 2004 17:27:12 -0000 1.6 @@ -34,6 +34,11 @@ import org.apache.fop.fonts.base14.Symbol; import org.apache.fop.fonts.base14.ZapfDingbats; +// commons logging +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +// Avalon import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; @@ -50,6 +55,11 @@ public class FontSetup { /** + * logging instance + */ + protected static Log log = LogFactory.getLog("org.apache.fop.fonts"); + + /** * Sets up the font info object. * * Adds metrics for basic fonts and useful family-style-weight @@ -210,7 +220,7 @@ public static List buildFontListFromConfiguration(Configuration cfg) throws ConfigurationException { List fontList = new java.util.ArrayList(); - Configuration[] font = cfg.getChildren("font"); + Configuration[] font = cfg.getChild("fonts").getChildren("font"); for (int i = 0; i < font.length; i++) { Configuration[] triple = font[i].getChildren("font-triplet"); List tripleList = new java.util.ArrayList(); @@ -224,6 +234,18 @@ efi = new EmbedFontInfo(font[i].getAttribute("metrics-url"), font[i].getAttributeAsBoolean("kerning", false), tripleList, font[i].getAttribute("embed-url", null)); + + if (log.isDebugEnabled()) { + log.debug("Adding font " + efi.getEmbedFile() + + ", metric file " + efi.getMetricsFile()); + for (int j = 0; j < tripleList.size(); ++j) { + FontTriplet triplet = (FontTriplet) tripleList.get(j); + log.debug("Font triplet " + + triplet.getName() + ", " + + triplet.getWeight() + ", " + + triplet.getStyle()); + } + } fontList.add(efi); } 1.4 +26 -0 xml-fop/src/java/org/apache/fop/pdf/PDFFilterList.java Index: PDFFilterList.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFFilterList.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PDFFilterList.java 27 Feb 2004 17:50:31 -0000 1.3 +++ PDFFilterList.java 9 Jul 2004 17:27:12 -0000 1.4 @@ -23,6 +23,11 @@ import java.util.List; import java.util.Map; +// commons logging +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +// Avalon import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; @@ -48,6 +53,11 @@ private boolean ignoreASCIIFilters = false; /** + * logging instance + */ + protected static Log logger = LogFactory.getLog("org.apache.fop.render"); + + /** * Default constructor. * <p> * The flag for ignoring ASCII filters defaults to false. @@ -276,6 +286,22 @@ if (type == null) { type = PDFFilterList.DEFAULT_FILTER; } + + if (!filterList.isEmpty() && logger.isDebugEnabled()) { + StringBuffer debug = new StringBuffer("Adding PDF filter"); + if (filterList.size() != 1) { + debug.append("s"); + } + debug.append(" for type ").append(type).append(": "); + for (int j = 0; j < filterList.size(); j++) { + if (j != 0) { + debug.append(", "); + } + debug.append(filterList.get(j)); + } + logger.debug(debug.toString()); + } + if (filterMap.get(type) != null) { throw new ConfigurationException("A filterList of type '" + type + "' has already been defined"); 1.31 +10 -1 xml-fop/src/java/org/apache/fop/render/AbstractRenderer.java Index: AbstractRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/AbstractRenderer.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- AbstractRenderer.java 23 Jun 2004 00:25:27 -0000 1.30 +++ AbstractRenderer.java 9 Jul 2004 17:27:12 -0000 1.31 @@ -87,7 +87,7 @@ /** * logging instance */ - protected static Log logger = LogFactory.getLog("FOP"); + protected static Log logger = LogFactory.getLog("org.apache.fop.render"); /** * block progression position @@ -723,6 +723,15 @@ getLogger().warn("Some XML content will be ignored. " + "No handler defined for XML: " + namespace); } + } + + /** + * Get the MIME type of the renderer. + * + * @return The MIME type of the renderer + */ + public String getMimeType() { + return null; } } 1.46 +5 -0 xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- PDFRenderer.java 23 Jun 2004 00:25:27 -0000 1.45 +++ PDFRenderer.java 9 Jul 2004 17:27:12 -0000 1.46 @@ -1343,5 +1343,10 @@ beginTextObject(); super.renderLeader(area); } + + /** @see org.apache.fop.render.AbstractRenderer */ + public String getMimeType() { + return MIME_TYPE; + } } 1.30 +5 -0 xml-fop/src/java/org/apache/fop/render/ps/PSRenderer.java Index: PSRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/ps/PSRenderer.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- PSRenderer.java 23 Jun 2004 00:25:27 -0000 1.29 +++ PSRenderer.java 9 Jul 2004 17:27:12 -0000 1.30 @@ -838,4 +838,9 @@ renderXML(userAgent, context, doc, ns); } + /** @see org.apache.fop.render.AbstractRenderer */ + public String getMimeType() { + return MIME_TYPE; + } + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]