Browse Source

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
pull/30/head
William Victor Mote 21 years ago
parent
commit
a4dc758f89
1 changed files with 45 additions and 33 deletions
  1. 45
    33
      src/java/org/apache/fop/fo/FOTreeBuilder.java

+ 45
- 33
src/java/org/apache/fop/fo/FOTreeBuilder.java View File

@@ -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 <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
*/
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.
*/

Loading…
Cancel
Save