diff options
author | Jeremias Maerki <jeremias@apache.org> | 2002-08-07 16:54:58 +0000 |
---|---|---|
committer | Jeremias Maerki <jeremias@apache.org> | 2002-08-07 16:54:58 +0000 |
commit | 1d750a74610958cfd33b5affcd1564cbb4626ae9 (patch) | |
tree | 93d6a1f480681c6fdae8ab081c44351d7e463683 /src/org/apache/fop/apps | |
parent | e3b6e3da3b59435c6190cdec99ec1b3547186533 (diff) | |
download | xmlgraphics-fop-1d750a74610958cfd33b5affcd1564cbb4626ae9.tar.gz xmlgraphics-fop-1d750a74610958cfd33b5affcd1564cbb4626ae9.zip |
First batch of changes for preparation for adoption of Avalon patterns. Only changes on logging for now. Mostly usage of LogEnabled contract interface. Separate mail follows.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@195068 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/org/apache/fop/apps')
-rw-r--r-- | src/org/apache/fop/apps/AWTStarter.java | 4 | ||||
-rw-r--r-- | src/org/apache/fop/apps/CommandLineOptions.java | 2 | ||||
-rw-r--r-- | src/org/apache/fop/apps/CommandLineStarter.java | 4 | ||||
-rw-r--r-- | src/org/apache/fop/apps/Driver.java | 77 | ||||
-rw-r--r-- | src/org/apache/fop/apps/LayoutHandler.java | 26 | ||||
-rw-r--r-- | src/org/apache/fop/apps/Starter.java | 9 | ||||
-rw-r--r-- | src/org/apache/fop/apps/StructureHandler.java | 12 |
7 files changed, 71 insertions, 63 deletions
diff --git a/src/org/apache/fop/apps/AWTStarter.java b/src/org/apache/fop/apps/AWTStarter.java index 20b0d8456..6f2bc3c21 100644 --- a/src/org/apache/fop/apps/AWTStarter.java +++ b/src/org/apache/fop/apps/AWTStarter.java @@ -94,7 +94,7 @@ public class AWTStarter extends CommandLineStarter { public void run() throws FOPException { Driver driver = new Driver(); - driver.setLogger(log); + setupLogger(driver); if (errorDump) { driver.setErrorDump(true); } @@ -160,7 +160,7 @@ public class AWTStarter extends CommandLineStarter { URL url = getClass().getResource(path); in = url.openStream(); } catch (Exception ex) { - log.error("Can't find URL to: <" + path + "> " + getLogger().error("Can't find URL to: <" + path + "> " + ex.getMessage(), ex); } return new SecureResourceBundle(in); diff --git a/src/org/apache/fop/apps/CommandLineOptions.java b/src/org/apache/fop/apps/CommandLineOptions.java index b2721ccab..0dc4d3990 100644 --- a/src/org/apache/fop/apps/CommandLineOptions.java +++ b/src/org/apache/fop/apps/CommandLineOptions.java @@ -408,7 +408,7 @@ public class CommandLineOptions { default: starter = new CommandLineStarter(this); } - starter.setLogger(log); + starter.enableLogging(log); return starter; } diff --git a/src/org/apache/fop/apps/CommandLineStarter.java b/src/org/apache/fop/apps/CommandLineStarter.java index 03c1eb0a4..9a2543842 100644 --- a/src/org/apache/fop/apps/CommandLineStarter.java +++ b/src/org/apache/fop/apps/CommandLineStarter.java @@ -47,13 +47,13 @@ public class CommandLineStarter extends Starter { public void run() throws FOPException { String version = Version.getVersion(); - log.info(version); + getLogger().info(version); XMLReader parser = inputHandler.getParser(); setParserFeatures(parser); Driver driver = new Driver(); - driver.setLogger(log); + setupLogger(driver); driver.initialize(); if (errorDump) { diff --git a/src/org/apache/fop/apps/Driver.java b/src/org/apache/fop/apps/Driver.java index 730ad1bf0..dd2707cd4 100644 --- a/src/org/apache/fop/apps/Driver.java +++ b/src/org/apache/fop/apps/Driver.java @@ -22,6 +22,8 @@ import org.apache.fop.render.pdf.PDFRenderer; // Avalon import org.apache.avalon.framework.logger.ConsoleLogger; import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.logger.LogEnabled; +import org.apache.avalon.framework.logger.AbstractLogEnabled; // DOM import org.w3c.dom.Document; @@ -52,6 +54,7 @@ import java.util.*; * <PRE> * Driver driver = new Driver(new InputSource (args[0]), * new FileOutputStream(args[1])); + * driver.enableLogging(myLogger); //optional * driver.setRenderer(RENDER_PDF); * driver.run(); * </PRE> @@ -81,11 +84,12 @@ import java.util.*; * * <PRE> * Driver driver = new Driver(); + * driver.enableLogging(myLogger); //optional * driver.setRenderer(new org.apache.fop.render.awt.AWTRenderer(translator)); * driver.render(parser, fileInputSource(args[0])); * </PRE> */ -public class Driver { +public class Driver implements LogEnabled { /** * Render to PDF. OutputStream must be set @@ -144,7 +148,7 @@ public class Driver { /** * the structure handler - */ + */ private StructureHandler structHandler; /** @@ -170,11 +174,11 @@ public class Driver { /** * the system resources that FOP will use */ - private Logger log; + private Logger log = null; private FOUserAgent userAgent = null; public static final String getParserClassName() { - try { + try { return javax.xml.parsers.SAXParserFactory.newInstance().newSAXParser().getXMLReader().getClass().getName(); } catch (javax.xml.parsers.ParserConfigurationException e) { return null; @@ -198,7 +202,7 @@ public class Driver { public void initialize() { _stream = null; - _treeBuilder = new FOTreeBuilder(); + _treeBuilder = new FOTreeBuilder(); _treeBuilder.setUserAgent(getUserAgent()); setupDefaultMappings(); } @@ -210,24 +214,29 @@ public class Driver { private FOUserAgent getUserAgent() { if(userAgent == null) { userAgent = new FOUserAgent(); - userAgent.setLogger(getLogger()); + userAgent.enableLogging(getLogger()); String base = org.apache.fop.configuration.Configuration.getStringValue("baseDir"); userAgent.setBaseURL(base); } return userAgent; } - public void setLogger(Logger logger) { - log = logger; + public void enableLogging(Logger log) { + if (this.log == null) { + this.log = log; + } else { + getLogger().warn("Logger is already set! Won't use the new logger."); + } } - private Logger getLogger() { - if(log == null) { - log = new ConsoleLogger(ConsoleLogger.LEVEL_INFO); - log.error("Logger not set"); - } - return log; + protected Logger getLogger() { + if(this.log == null) { + this.log = new ConsoleLogger(ConsoleLogger.LEVEL_INFO); + this.log.error("Logger not set. Using ConsoleLogger as default."); + } + + return this.log; } /** @@ -321,42 +330,40 @@ public class Driver { public void setRenderer(int renderer) throws IllegalArgumentException { switch (renderer) { case RENDER_PDF: - setRenderer(new org.apache.fop.render.pdf.PDFRenderer()); + setRenderer("org.apache.fop.render.pdf.PDFRenderer"); break; case RENDER_AWT: throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT"); case RENDER_PRINT: throw new IllegalArgumentException("Use renderer form of setRenderer() for PRINT"); case RENDER_PCL: - setRenderer(new org.apache.fop.render.pcl.PCLRenderer()); + setRenderer("org.apache.fop.render.pcl.PCLRenderer"); break; case RENDER_PS: - setRenderer(new org.apache.fop.render.ps.PSRenderer()); + setRenderer("org.apache.fop.render.ps.PSRenderer"); break; case RENDER_TXT: - setRenderer(new org.apache.fop.render.txt.TXTRenderer()); + setRenderer("org.apache.fop.render.txt.TXTRenderer()"); break; case RENDER_MIF: //structHandler = new org.apache.fop.mif.MIFHandler(_stream); break; case RENDER_XML: - setRenderer(new org.apache.fop.render.xml.XMLRenderer()); + setRenderer("org.apache.fop.render.xml.XMLRenderer"); break; case RENDER_SVG: - setRenderer(new org.apache.fop.render.svg.SVGRenderer()); + setRenderer("org.apache.fop.render.svg.SVGRenderer"); break; default: throw new IllegalArgumentException("Unknown renderer type"); } - } /** - * Set the Renderer to use - * @param renderer the renderer instance to use + * Set the Renderer to use. + * @param renderer the renderer instance to use (Note: Logger must be set at this point) */ public void setRenderer(Renderer renderer) { - renderer.setLogger(getLogger()); renderer.setUserAgent(getUserAgent()); _renderer = renderer; } @@ -387,6 +394,9 @@ public class Driver { try { _renderer = (Renderer)Class.forName(rendererClassName).newInstance(); + if (_renderer instanceof LogEnabled) { + ((LogEnabled)_renderer).enableLogging(getLogger()); + } _renderer.setProducer(Version.getVersion()); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Could not find " @@ -457,8 +467,8 @@ public class Driver { } else { structHandler = new org.apache.fop.mif.MIFHandler(_stream); } - structHandler.setLogger(getLogger()); - _treeBuilder.setLogger(getLogger()); + structHandler.enableLogging(getLogger()); + _treeBuilder.setUserAgent(getUserAgent()); _treeBuilder.setStructHandler(structHandler); @@ -511,19 +521,18 @@ public class Driver { */ public void dumpError(Exception e) { if (_errorDump) { - Logger log = getLogger(); if (e instanceof SAXException) { - log.error("", e); + getLogger().error("", e); if (((SAXException)e).getException() != null) { - log.error("", ((SAXException)e).getException()); + getLogger().error("", ((SAXException)e).getException()); } } else if (e instanceof FOPException) { e.printStackTrace(); if (((FOPException)e).getException() != null) { - log.error("", ((FOPException)e).getException()); + getLogger().error("", ((FOPException)e).getException()); } } else { - log.error("", e); + getLogger().error("", e); } } } @@ -575,7 +584,7 @@ class Service { } String serviceFile = "META-INF/services/" + cls.getName(); - // System.out.println("File: " + serviceFile); + // getLogger().debug("File: " + serviceFile); Vector v = (Vector)providerMap.get(serviceFile); if (v != null) @@ -594,7 +603,7 @@ class Service { while (e.hasMoreElements()) { try { java.net.URL u = (java.net.URL)e.nextElement(); - // System.out.println("URL: " + u); + //getLogger().debug("URL: " + u); InputStream is = u.openStream(); Reader r = new InputStreamReader(is, "UTF-8"); @@ -616,7 +625,7 @@ class Service { line = br.readLine(); continue; } - // System.out.println("Line: " + line); + // getLogger().debug("Line: " + line); // Try and load the class // Object obj = cl.loadClass(line).newInstance(); diff --git a/src/org/apache/fop/apps/LayoutHandler.java b/src/org/apache/fop/apps/LayoutHandler.java index aae36e2ea..e5d359a7b 100644 --- a/src/org/apache/fop/apps/LayoutHandler.java +++ b/src/org/apache/fop/apps/LayoutHandler.java @@ -132,20 +132,26 @@ public class LayoutHandler extends StructureHandler { long memoryNow = runtime.totalMemory() - runtime.freeMemory(); long memoryUsed = (memoryNow - initialMemory) / 1024L; - log.debug("Initial heap size: " + (initialMemory / 1024L) + "Kb"); - log.debug("Current heap size: " + (memoryNow / 1024L) + "Kb"); - log.debug("Total memory used: " + memoryUsed + "Kb"); - - if (!MEM_PROFILE_WITH_GC) { - log.debug(" Memory use is indicative; no GC was performed"); - log.debug(" These figures should not be used comparatively"); + if (getLogger().isDebugEnabled()) { + getLogger().debug("Initial heap size: " + (initialMemory / 1024L) + "Kb"); + getLogger().debug("Current heap size: " + (memoryNow / 1024L) + "Kb"); + getLogger().debug("Total memory used: " + memoryUsed + "Kb"); + + if (!MEM_PROFILE_WITH_GC) { + getLogger().debug(" Memory use is indicative; no GC was performed"); + getLogger().debug(" These figures should not be used comparatively"); + } } long timeUsed = System.currentTimeMillis() - startTime; - log.debug("Total time used: " + timeUsed + "ms"); - log.debug("Pages rendered: " + pageCount); - //log.debug("Avg render time: " + (timeUsed / pageCount) + "ms/page"); + if (getLogger().isDebugEnabled()) { + getLogger().debug("Total time used: " + timeUsed + "ms"); + getLogger().debug("Pages rendered: " + pageCount); + if (pageCount > 0) { + getLogger().debug("Avg render time: " + (timeUsed / pageCount) + "ms/page"); + } + } } public void startPageSequence(PageSequence pageSeq, org.apache.fop.fo.Title seqTitle, LayoutMasterSet lms) { diff --git a/src/org/apache/fop/apps/Starter.java b/src/org/apache/fop/apps/Starter.java index a3dc669fe..3c280b274 100644 --- a/src/org/apache/fop/apps/Starter.java +++ b/src/org/apache/fop/apps/Starter.java @@ -8,7 +8,7 @@ package org.apache.fop.apps; // Avalon -import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.logger.AbstractLogEnabled; // SAX import org.xml.sax.XMLReader; @@ -23,20 +23,15 @@ import java.net.URL; * Creates a SAX Parser (defaulting to Xerces). * */ -public abstract class Starter { +public abstract class Starter extends AbstractLogEnabled { Options options; InputHandler inputHandler; - protected Logger log; public Starter() throws FOPException { options = new Options(); } - public void setLogger(Logger logger) { - log = logger; - } - public void setInputHandler(InputHandler inputHandler) { this.inputHandler = inputHandler; } diff --git a/src/org/apache/fop/apps/StructureHandler.java b/src/org/apache/fop/apps/StructureHandler.java index 74f858396..cdbed0b22 100644 --- a/src/org/apache/fop/apps/StructureHandler.java +++ b/src/org/apache/fop/apps/StructureHandler.java @@ -10,7 +10,10 @@ package org.apache.fop.apps; // Java import java.util.HashSet; -import org.apache.avalon.framework.logger.Logger; +// Avalon +import org.apache.avalon.framework.logger.AbstractLogEnabled; + +// FOP import org.apache.fop.fo.pagination.*; import org.apache.fop.fo.flow.*; import org.apache.fop.fo.*; @@ -23,21 +26,16 @@ import org.xml.sax.SAXException; * Sub-classes can then implement various methods to handle * the FO Tree when the SAX events occur. */ -public class StructureHandler { +public class StructureHandler extends AbstractLogEnabled { /** The current set of id's in the FO tree This is used so we know if the FO tree contains duplicates */ private HashSet idReferences = new HashSet(); - protected Logger log; public StructureHandler() { } - public void setLogger(Logger logger) { - log = logger; - } - public HashSet getIDReferences() { return idReferences; } |