From 994e1cb87a928cc26bff25f6a3342b5b12a0ce71 Mon Sep 17 00:00:00 2001 From: William Victor Mote Date: Sun, 27 Apr 2003 17:15:39 +0000 Subject: [PATCH] Refactor: 1. extract method findFOMaker from startElement. 2. change name of startElement param uri to namespaceURI. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196353 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/fop/fo/FOTreeBuilder.java | 78 +++++++++++-------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/src/java/org/apache/fop/fo/FOTreeBuilder.java b/src/java/org/apache/fop/fo/FOTreeBuilder.java index 4a10e4889..ddc2d1417 100644 --- a/src/java/org/apache/fop/fo/FOTreeBuilder.java +++ b/src/java/org/apache/fop/fo/FOTreeBuilder.java @@ -3,34 +3,34 @@ * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ - * + * * Copyright (C) 1999-2003 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 @@ -42,12 +42,12 @@ * (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 . - */ + */ package org.apache.fop.fo; // FOP @@ -66,6 +66,8 @@ import org.xml.sax.Attributes; // Avalon import org.apache.avalon.framework.logger.Logger; +import org.apache.fop.fo.ElementMapping.*; +import org.apache.fop.fo.ElementMapping.*; /** * SAX Handler that builds the formatting object tree. @@ -199,34 +201,13 @@ public class FOTreeBuilder extends DefaultHandler { * SAX Handler for the start of an element * @see org.xml.sax.ContentHandler#startElement(String, String, String, Attributes) */ - public void startElement(String uri, String localName, String rawName, + public void startElement(String namespaceURI, String localName, String rawName, Attributes attlist) throws SAXException { /* the formatting object started */ FONode fobj; /* the maker for the formatting object started */ - ElementMapping.Maker fobjMaker = null; - - Map table = (Map)fobjTable.get(uri); - if (table != null) { - fobjMaker = (ElementMapping.Maker)table.get(localName); - // try default - if (fobjMaker == null) { - fobjMaker = (ElementMapping.Maker)table.get(ElementMapping.DEFAULT); - } - } - - if (fobjMaker == null) { - if (getLogger().isWarnEnabled()) { - getLogger().warn("Unknown formatting object " + uri + "^" + localName); - } - if (namespaces.contains(uri.intern())) { - // fall back - fobjMaker = new Unknown.Maker(); - } else { - fobjMaker = new UnknownXMLObj.Maker(uri); - } - } + ElementMapping.Maker fobjMaker = findFOMaker(namespaceURI, localName); try { fobj = fobjMaker.make(currentFObj); @@ -256,6 +237,37 @@ public class FOTreeBuilder extends DefaultHandler { currentFObj = fobj; } + /** + * Finds the Maker used to create FO objects of a particular type + * @param namespaceURI URI for the namespace of the element + * @param localName name of the Element + * @return the ElementMapping.Maker that can create an FO object for this element + */ + public Maker findFOMaker(String namespaceURI, String localName) { + Map table = (Map)fobjTable.get(namespaceURI); + Maker fobjMaker = null; + if (table != null) { + fobjMaker = (ElementMapping.Maker)table.get(localName); + // try default + if (fobjMaker == null) { + fobjMaker = (ElementMapping.Maker)table.get(ElementMapping.DEFAULT); + } + } + + if (fobjMaker == null) { + if (getLogger().isWarnEnabled()) { + getLogger().warn("Unknown formatting object " + namespaceURI + "^" + localName); + } + if (namespaces.contains(namespaceURI.intern())) { + // fall back + fobjMaker = new Unknown.Maker(); + } else { + fobjMaker = new UnknownXMLObj.Maker(namespaceURI); + } + } + return fobjMaker; + } + /** * Resets this object for another run. */ -- 2.39.5