aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/apache/fop/apps
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2002-08-07 16:54:58 +0000
committerJeremias Maerki <jeremias@apache.org>2002-08-07 16:54:58 +0000
commit1d750a74610958cfd33b5affcd1564cbb4626ae9 (patch)
tree93d6a1f480681c6fdae8ab081c44351d7e463683 /src/org/apache/fop/apps
parente3b6e3da3b59435c6190cdec99ec1b3547186533 (diff)
downloadxmlgraphics-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.java4
-rw-r--r--src/org/apache/fop/apps/CommandLineOptions.java2
-rw-r--r--src/org/apache/fop/apps/CommandLineStarter.java4
-rw-r--r--src/org/apache/fop/apps/Driver.java77
-rw-r--r--src/org/apache/fop/apps/LayoutHandler.java26
-rw-r--r--src/org/apache/fop/apps/Starter.java9
-rw-r--r--src/org/apache/fop/apps/StructureHandler.java12
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;
}