From 8cef4a0766bf1ae378043264df7dbcde71829329 Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Tue, 11 Jul 2006 08:28:02 +0000 Subject: [PATCH] Made FOUserAgent.configure() protected again (not to tempt any users to play with it). Instead improved CommandLineOptions to properly build and adjust the FOUserAgent. Manuel's fix was ok, but I wasn't too comfortable with the public configure() method. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@420761 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/fop/apps/FOUserAgent.java | 2 +- .../apache/fop/cli/CommandLineOptions.java | 29 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/java/org/apache/fop/apps/FOUserAgent.java b/src/java/org/apache/fop/apps/FOUserAgent.java index ab9d8335f..5c78221f4 100644 --- a/src/java/org/apache/fop/apps/FOUserAgent.java +++ b/src/java/org/apache/fop/apps/FOUserAgent.java @@ -282,7 +282,7 @@ public class FOUserAgent { * Configures the FOUserAgent through the factory's configuration. * @see org.apache.avalon.framework.configuration.Configurable */ - public void configure(Configuration cfg) { + protected void configure(Configuration cfg) { setBaseURL(FopFactory.getBaseURLfromConfig(cfg, "base")); if (cfg.getChild("target-resolution", false) != null) { this.targetResolution diff --git a/src/java/org/apache/fop/cli/CommandLineOptions.java b/src/java/org/apache/fop/cli/CommandLineOptions.java index 8618ec5b4..e0714cfea 100644 --- a/src/java/org/apache/fop/cli/CommandLineOptions.java +++ b/src/java/org/apache/fop/cli/CommandLineOptions.java @@ -23,6 +23,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Locale; +import java.util.Map; import java.util.Vector; import javax.swing.UIManager; @@ -88,7 +89,11 @@ public class CommandLineOptions { private int inputmode = NOT_SET; /* output mode */ private String outputmode = null; - + /* rendering options (for the user agent) */ + private Map renderingOptions = new java.util.HashMap(); + /* target resolution (for the user agent) */ + private int targetResolution = 0; + private FopFactory factory = FopFactory.newInstance(); private FOUserAgent foUserAgent; @@ -128,8 +133,6 @@ public class CommandLineOptions { throws FOPException, IOException { boolean optionsParsed = true; - foUserAgent = factory.newFOUserAgent(); - try { optionsParsed = parseOptions(args); if (optionsParsed) { @@ -138,8 +141,12 @@ public class CommandLineOptions { } checkSettings(); createUserConfig(); - if (factory.getUserConfig() != null) { - foUserAgent.configure(factory.getUserConfig()); + + //Factory config is set up, now we can create the user agent + foUserAgent = factory.newFOUserAgent(); + foUserAgent.getRendererOptions().putAll(renderingOptions); + if (targetResolution != 0) { + foUserAgent.setTargetResolution(targetResolution); } addXSLTParameter("fop-output-format", getOutputFormat()); addXSLTParameter("fop-version", Version.getVersion()); @@ -337,7 +344,7 @@ public class CommandLineOptions { throw new FOPException( "if you use '-dpi', you must specify a resolution (dots per inch)"); } else { - foUserAgent.setTargetResolution(Integer.parseInt(args[i + 1])); + this.targetResolution = Integer.parseInt(args[i + 1]); return 1; } } @@ -390,7 +397,7 @@ public class CommandLineOptions { } else { outfile = new File(args[i + 1]); if (pdfAMode != null) { - foUserAgent.getRendererOptions().put("pdf-a-mode", pdfAMode); + renderingOptions.put("pdf-a-mode", pdfAMode); } return 1; } @@ -517,7 +524,7 @@ public class CommandLineOptions { || (args[i + 1].charAt(0) != '-')) { mime = args[i + 1]; if ("list".equals(mime)) { - String[] mimes = foUserAgent.getRendererFactory().listSupportedMimeTypes(); + String[] mimes = factory.getRendererFactory().listSupportedMimeTypes(); System.out.println("Supported MIME types:"); for (int j = 0; j < mimes.length; j++) { System.out.println(" " + mimes[j]); @@ -580,7 +587,7 @@ public class CommandLineOptions { } private PDFEncryptionParams getPDFEncryptionParams() throws FOPException { - PDFEncryptionParams params = (PDFEncryptionParams)foUserAgent.getRendererOptions().get( + PDFEncryptionParams params = (PDFEncryptionParams)renderingOptions.get( PDFRenderer.ENCRYPTION_PARAMS); if (params == null) { if (!PDFEncryptionManager.checkAvailableAlgorithms()) { @@ -588,7 +595,7 @@ public class CommandLineOptions { + " Please make sure MD5 and RC4 algorithms are available."); } params = new PDFEncryptionParams(); - foUserAgent.getRendererOptions().put(PDFRenderer.ENCRYPTION_PARAMS, params); + renderingOptions.put(PDFRenderer.ENCRYPTION_PARAMS, params); } return params; } @@ -754,7 +761,7 @@ public class CommandLineOptions { throw new FOPException("Renderer has not been set!"); } if (outputmode.equals(MimeConstants.MIME_FOP_AREA_TREE)) { - foUserAgent.getRendererOptions().put("fineDetail", isCoarseAreaXml()); + renderingOptions.put("fineDetail", isCoarseAreaXml()); } return outputmode; } -- 2.39.5