From f5b8b3f282a13b74d9be7281ae39489c6fe195ea Mon Sep 17 00:00:00 2001 From: William Victor Mote Date: Sun, 27 Apr 2003 22:21:24 +0000 Subject: [PATCH] Refactor: extract method findNearestAncestorFObj from handleAttrs git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196356 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/fop/fo/FObj.java | 42 +++++++++++++++++----------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/java/org/apache/fop/fo/FObj.java b/src/java/org/apache/fop/fo/FObj.java index c9a840d54..5eaff9f59 100644 --- a/src/java/org/apache/fop/fo/FObj.java +++ b/src/java/org/apache/fop/fo/FObj.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; // Java @@ -150,23 +150,33 @@ public class FObj extends FONode { * Handle the attributes for this element. * The attributes must be used immediately as the sax attributes * will be altered for the next element. + * @param attlist Collection of attributes passed to us from the parser. */ public void handleAttrs(Attributes attlist) throws FOPException { - FONode par = parent; - while (par != null && !(par instanceof FObj)) { - par = par.parent; - } + FObj par = findNearestAncestorFObj(); PropertyList props = null; if (par != null) { - props = ((FObj) par).properties; + props = par.properties; } properties = getListBuilder().makeList(FO_URI, name, attlist, props, - (FObj) par); + par); properties.setFObj(this); this.propMgr = makePropertyManager(properties); setWritingMode(); } + /** + * Find the nearest parent, grandparent, etc. FONode that is also an FObj + * @return FObj the nearest ancestor FONode that is an FObj + */ + public FObj findNearestAncestorFObj() { + FONode par = parent; + while (par != null && !(par instanceof FObj)) { + par = par.parent; + } + return (FObj)par; + } + protected PropertyManager makePropertyManager( PropertyList propertyList) { return new PropertyManager(propertyList); -- 2.39.5