From 51aeee29e02baf6c2c40483899a7104a10931352 Mon Sep 17 00:00:00 2001 From: Keiron Liddle Date: Thu, 21 Jun 2001 13:35:10 +0000 Subject: [PATCH] handles baseDir (with a capital D) properly as suggested by Anthony Tagunov git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194302 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/tools/anttasks/Fop.java | 302 +++++++++------------ 1 file changed, 131 insertions(+), 171 deletions(-) diff --git a/src/org/apache/fop/tools/anttasks/Fop.java b/src/org/apache/fop/tools/anttasks/Fop.java index 509a04fa5..ec8824a0f 100644 --- a/src/org/apache/fop/tools/anttasks/Fop.java +++ b/src/org/apache/fop/tools/anttasks/Fop.java @@ -1,52 +1,7 @@ -/* - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 1999 The Apache Software Foundation. All rights reserved. - - Redistribution and use in source and binary forms, with or without modifica- - tion, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. The end-user documentation included with the redistribution, if any, must - include the following acknowledgment: "This product includes software - developed by the Apache Software Foundation (http://www.apache.org/)." - Alternately, this acknowledgment may appear in the software itself, if - and wherever such third-party acknowledgments normally appear. - - 4. The names "Fop" and "Apache Software Foundation" must not be used to - endorse or promote products derived from this software without prior - written permission. For written permission, please contact - apache@apache.org. - - 5. Products derived from this software may not be called "Apache", nor may - "Apache" appear in their name, without prior written permission of the - Apache Software Foundation. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- - DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - This software consists of voluntary contributions made by many individuals - on behalf of the Apache Software Foundation and was originally created by - James Tauber . For more information on the Apache - Software Foundation, please see . - +/* $Id$ + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources. */ package org.apache.fop.tools.anttasks; @@ -81,11 +36,10 @@ import org.apache.fop.configuration.Configuration; *
    *
  • fofile -> formatting objects file to be transformed
  • *
  • pdffile -> output filename
  • - *
  • basedir -> directory to work from
  • + *
  • baseDir -> directory to work from
  • *
  • messagelevel -> (info | verbose | debug) level to output non-error messages
  • *
*/ - public class Fop extends Task { File foFile; File pdfFile; @@ -104,11 +58,11 @@ public class Fop extends Task { * Gets the input file */ public File getFofile() { - if(foFile == null) { - log("fofile attribute is not set", Project.MSG_ERR); - throw new BuildException("fofile attribute is not set"); - } - return foFile; + if (foFile == null) { + log("fofile attribute is not set", Project.MSG_ERR); + throw new BuildException("fofile attribute is not set"); + } + return foFile; } /** @@ -123,11 +77,11 @@ public class Fop extends Task { * Sets the output file */ public File getPdffile() { - if(pdfFile == null) { - log("pdffile attribute is not set", Project.MSG_ERR); - throw new BuildException("pdffile attribute is not set"); - } - return pdfFile; + if (pdfFile == null) { + log("pdffile attribute is not set", Project.MSG_ERR); + throw new BuildException("pdffile attribute is not set"); + } + return pdfFile; } /** @@ -135,16 +89,17 @@ public class Fop extends Task { * @param String (info | verbose | debug) */ public void setMessagelevel(String messageLevel) { - if(messageLevel.equalsIgnoreCase("info")) { - messageType = Project.MSG_INFO; - } else if(messageLevel.equalsIgnoreCase("verbose")) { - messageType = Project.MSG_VERBOSE; - } else if(messageLevel.equalsIgnoreCase("debug")) { - messageType = Project.MSG_DEBUG; - } else { - log("messagelevel set to unknown value \"" + messageLevel + "\"", Project.MSG_ERR); - throw new BuildException("unknown messagelevel"); - } + if (messageLevel.equalsIgnoreCase("info")) { + messageType = Project.MSG_INFO; + } else if (messageLevel.equalsIgnoreCase("verbose")) { + messageType = Project.MSG_VERBOSE; + } else if (messageLevel.equalsIgnoreCase("debug")) { + messageType = Project.MSG_DEBUG; + } else { + log("messagelevel set to unknown value \"" + messageLevel + + "\"", Project.MSG_ERR); + throw new BuildException("unknown messagelevel"); + } } /** @@ -152,36 +107,35 @@ public class Fop extends Task { * representing the current message level. */ public int getMessageType() { - return messageType; + return messageType; } - + /** * Sets the base directory; currently ignored * @param File to use as a working directory */ public void setBasedir(File baseDir) { - this.baseDir = baseDir; + this.baseDir = baseDir; } /** * Gets the base directory */ public File getBasedir() { - return (baseDir != null) ? baseDir : project.resolveFile("."); + return (baseDir != null) ? baseDir : project.resolveFile("."); } /** * Starts execution of this task */ public void execute () throws BuildException { - try { - Starter starter = new FOPTaskStarter(this); - starter.run(); - } - catch (FOPException ex) { - throw new BuildException(ex); - } - + try { + Starter starter = new FOPTaskStarter(this); + starter.run(); + } catch (FOPException ex) { + throw new BuildException(ex); + } + } } @@ -189,45 +143,48 @@ class FOPTaskStarter extends Starter { Fop task; MessageLogger logger; - FOPTaskStarter(Fop task) - throws FOPException - { - this.task = task; - MessageHandler.setOutputMethod(MessageHandler.EVENT); - logger = new MessageLogger(new MessageHandler(), task); - logger.setMessageLevel(task.getMessageType()); + FOPTaskStarter(Fop task) throws FOPException { + this.task = task; + MessageHandler.setOutputMethod(MessageHandler.EVENT); + logger = new MessageLogger(new MessageHandler(), task); + logger.setMessageLevel(task.getMessageType()); } - public void run () - throws FOPException - { - Configuration.put("basedir", task.getBasedir()); - - InputHandler inputHandler = new FOInputHandler(task.getFofile()); - XMLReader parser = inputHandler.getParser(); - setParserFeatures(parser); - - FileOutputStream pdfOut = null; - try { - pdfOut = new FileOutputStream(task.getPdffile()); - }catch(Exception ex) { - MessageHandler.errorln("Failed to open " + task.getPdffile()); - throw new BuildException(ex); - } - - task.log("Using base directory: " + Configuration.getValue("basedir"), Project.MSG_DEBUG); - task.log(task.getFofile().getName() + " -> " + task.getPdffile().getName(), Project.MSG_INFO); - - try { - Driver driver = new Driver(inputHandler.getInputSource(), pdfOut); - driver.setRenderer(Driver.RENDER_PDF); - driver.setXMLReader(parser); - driver.run(); - } catch (Exception ex) { - MessageHandler.logln("Error: " + ex.getMessage()); - throw new BuildException(ex); - } - logger.die(); + public void run () throws FOPException { + try { + Configuration.put("baseDir", task.getBasedir().toURL().toExternalForm()); + } catch (Exception e) { + task.log("Error setting base directory", Project.MSG_DEBUG); + } + + InputHandler inputHandler = new FOInputHandler(task.getFofile()); + XMLReader parser = inputHandler.getParser(); + setParserFeatures(parser); + + FileOutputStream pdfOut = null; + try { + pdfOut = new FileOutputStream(task.getPdffile()); + } catch (Exception ex) { + MessageHandler.errorln("Failed to open " + task.getPdffile()); + throw new BuildException(ex); + } + + task.log("Using base directory: " + + Configuration.getValue("baseDir"), Project.MSG_DEBUG); + task.log(task.getFofile().getName() + " -> " + + task.getPdffile().getName(), Project.MSG_INFO); + + try { + Driver driver = + new Driver(inputHandler.getInputSource(), pdfOut); + driver.setRenderer(Driver.RENDER_PDF); + driver.setXMLReader(parser); + driver.run(); + } catch (Exception ex) { + MessageHandler.logln("Error: " + ex.getMessage()); + throw new BuildException(ex); + } + logger.die(); } } @@ -241,71 +198,74 @@ class MessageLogger implements MessageListener { boolean performCaching = true; MessageLogger(MessageHandler handler, Task task) { - this(handler, task, Project.MSG_VERBOSE); + this(handler, task, Project.MSG_VERBOSE); } - + MessageLogger(MessageHandler handler, Task task, int messageLevel) { - this.handler = handler; - this.task = task; - setMessageLevel(messageLevel); - handler.addListener(this); + this.handler = handler; + this.task = task; + setMessageLevel(messageLevel); + handler.addListener(this); } public void setMessageLevel(int messageLevel) { - this.messageLevel = messageLevel; + this.messageLevel = messageLevel; } - + public int getMessageLevel() { - return messageLevel; + return messageLevel; } public void processMessage(MessageEvent event) { - task.log("Logger got message: \"" + event.getMessage() + "\"", Project.MSG_DEBUG); - - boolean flushed = false; - - if(!flushed) { - int messageLevel; - if(event.getMessageType() == MessageEvent.ERROR) { - messageLevel = Project.MSG_ERR; - } else { - messageLevel = this.messageLevel; - } - if(messageLevel != lastMessageLevel) { - flush(); - flushed = true; - } - lastMessageLevel = messageLevel; - } - - cache.append(event.getMessage()); - - if(!performCaching) { - flush(); - flushed = true; - } - - for(int i = 0; !flushed && i < breakChars.length(); i++) { - if(event.getMessage().lastIndexOf(breakChars.charAt(i)) != -1) { - flush(); - flushed = true; - } - } + task.log("Logger got message: \"" + event.getMessage() + "\"", + Project.MSG_DEBUG); + + boolean flushed = false; + + if (!flushed) { + int messageLevel; + if (event.getMessageType() == MessageEvent.ERROR) { + messageLevel = Project.MSG_ERR; + } else { + messageLevel = this.messageLevel; + } + if (messageLevel != lastMessageLevel) { + flush(); + flushed = true; + } + lastMessageLevel = messageLevel; + } + + cache.append(event.getMessage()); + + if (!performCaching) { + flush(); + flushed = true; + } + + for (int i = 0; !flushed && i < breakChars.length(); i++) { + if (event.getMessage().lastIndexOf(breakChars.charAt(i)) != + -1) { + flush(); + flushed = true; + } + } } - + public void flush() { - StringTokenizer output = new StringTokenizer(cache.toString(), "\n", false); - while(output.hasMoreElements()) { - task.log(output.nextElement().toString(), lastMessageLevel); - } - cache.setLength(0); + StringTokenizer output = + new StringTokenizer(cache.toString(), "\n", false); + while (output.hasMoreElements()) { + task.log(output.nextElement().toString(), lastMessageLevel); + } + cache.setLength(0); } public void die() { - flush(); - // because MessageHandler is static this has to be done - // or you can get duplicate messages if there are - // multiple tags in a buildfile - handler.removeListener(this); + flush(); + // because MessageHandler is static this has to be done + // or you can get duplicate messages if there are + // multiple tags in a buildfile + handler.removeListener(this); } } -- 2.39.5