gmazza 2003/07/12 14:22:04 Modified: examples/mathml/src/org/apache/fop/mathml MathMLElementMapping.java examples/plan/src/org/apache/fop/plan PlanElementMapping.java src/java/org/apache/fop/extensions ExtensionElementMapping.java src/java/org/apache/fop/fo ElementMapping.java FOElementMapping.java FOTreeBuilder.java src/java/org/apache/fop/svg SVGElementMapping.java Log: Reconfigured ElementMapping from an interface to an abstract base class Removed FOTreeBuilder references from all ElementMapping subclasses Simplified FOTreeBuilder ElementMapping instantiation somewhat Revision Changes Path 1.3 +6 -16 xml-fop/examples/mathml/src/org/apache/fop/mathml/MathMLElementMapping.java Index: MathMLElementMapping.java =================================================================== RCS file: /home/cvs/xml-fop/examples/mathml/src/org/apache/fop/mathml/MathMLElementMapping.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- MathMLElementMapping.java 7 Mar 2003 10:47:42 -0000 1.2 +++ MathMLElementMapping.java 12 Jul 2003 21:22:03 -0000 1.3 @@ -50,7 +50,6 @@ */ package org.apache.fop.mathml; -import org.apache.fop.fo.FOTreeBuilder; import org.apache.fop.fo.FONode; import org.apache.fop.fo.ElementMapping; import org.apache.fop.image.analyser.XMLReader; @@ -65,14 +64,13 @@ /** * This class provides the element mapping for FOP. */ -public class MathMLElementMapping implements ElementMapping { +public class MathMLElementMapping extends ElementMapping { - /** MathML namespace */ - public static final String URI = "http://www.w3.org/1998/Math/MathML"; - - private static HashMap foObjs = null; + public MathMLElementMapping() { + URI = "http://www.w3.org/1998/Math/MathML"; + } - private static synchronized void setupMathML() { + protected void initialize() { if (foObjs == null) { foObjs = new HashMap(); foObjs.put("math", new ME()); @@ -80,14 +78,6 @@ XMLReader.setConverter(URI, new MathMLConverter()); } - } - - /** - * @see org.apache.fop.fo.ElementMapping#addToBuilder(FOTreeBuilder) - */ - public void addToBuilder(FOTreeBuilder builder) { - setupMathML(); - builder.addMapping(URI, foObjs); } static class MathMLMaker extends ElementMapping.Maker { 1.3 +6 -16 xml-fop/examples/plan/src/org/apache/fop/plan/PlanElementMapping.java Index: PlanElementMapping.java =================================================================== RCS file: /home/cvs/xml-fop/examples/plan/src/org/apache/fop/plan/PlanElementMapping.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- PlanElementMapping.java 7 Mar 2003 10:47:51 -0000 1.2 +++ PlanElementMapping.java 12 Jul 2003 21:22:03 -0000 1.3 @@ -50,7 +50,6 @@ */ package org.apache.fop.plan; -import org.apache.fop.fo.FOTreeBuilder; import org.apache.fop.fo.FONode; import org.apache.fop.fo.ElementMapping; import org.apache.fop.image.analyser.XMLReader; @@ -62,14 +61,13 @@ /** * This class provides the element mapping for FOP. */ -public class PlanElementMapping implements ElementMapping { +public class PlanElementMapping extends ElementMapping { - /** The namespace for the plan extension */ - public static final String URI = "http://xml.apache.org/fop/plan"; - - private static HashMap foObjs = null; + public PlanElementMapping() { + URI = "http://xml.apache.org/fop/plan"; + } - private static synchronized void setupPlan() { + protected void initialize() { if (foObjs == null) { foObjs = new java.util.HashMap(); foObjs.put("plan", new PE()); @@ -77,14 +75,6 @@ XMLReader.setConverter(URI, new PlanConverter()); } - } - - /** - * @see org.apache.fop.fo.ElementMapping#addToBuilder(FOTreeBuilder) - */ - public void addToBuilder(FOTreeBuilder builder) { - setupPlan(); - builder.addMapping(URI, foObjs); } static class PlanMaker extends ElementMapping.Maker { 1.2 +5 -21 xml-fop/src/java/org/apache/fop/extensions/ExtensionElementMapping.java Index: ExtensionElementMapping.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/extensions/ExtensionElementMapping.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ExtensionElementMapping.java 11 Mar 2003 13:05:41 -0000 1.1 +++ ExtensionElementMapping.java 12 Jul 2003 21:22:03 -0000 1.2 @@ -52,7 +52,6 @@ import org.apache.fop.fo.FONode; import org.apache.fop.fo.ElementMapping; -import org.apache.fop.fo.FOTreeBuilder; import java.util.HashMap; @@ -61,34 +60,19 @@ * This sets up the mapping for the classes that handle the * pdf bookmark extension. */ -public class ExtensionElementMapping implements ElementMapping { - /** - * The pdf bookmark extension uri - */ - public static final String URI = "http://xml.apache.org/fop/extensions"; +public class ExtensionElementMapping extends ElementMapping { - // the mappings are only setup once and resued after that - private static HashMap foObjs = null; + public ExtensionElementMapping() { + URI = "http://xml.apache.org/fop/extensions"; + } - private static synchronized void setupExt() { + protected void initialize() { if (foObjs == null) { foObjs = new HashMap(); foObjs.put("bookmarks", new B()); foObjs.put("outline", new O()); foObjs.put("label", new L()); } - } - - /** - * Add the mappings to the fo tree builder. - * - * @param builder the fo tree builder to add the mappings - */ - public void addToBuilder(FOTreeBuilder builder) { - if (foObjs == null) { - setupExt(); - } - builder.addMapping(URI, foObjs); } static class B extends ElementMapping.Maker { 1.2 +37 -3 xml-fop/src/java/org/apache/fop/fo/ElementMapping.java Index: ElementMapping.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/ElementMapping.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ElementMapping.java 11 Mar 2003 13:05:19 -0000 1.1 +++ ElementMapping.java 12 Jul 2003 21:22:03 -0000 1.2 @@ -50,14 +50,48 @@ */ package org.apache.fop.fo; +import java.util.HashMap; + /** * Interface for adding supported element and property mappings to * the given builder. */ -public interface ElementMapping { - final String DEFAULT = "<default>"; +/** Abstract base class of FO Element Mappings. */ +public abstract class ElementMapping { + public static final String DEFAULT = "<default>"; + + /** The HashMap table of formatting objects defined by the ElementMapping */ + protected HashMap foObjs = null; + + /** The namespace for the ElementMapping */ + protected String URI = null; + + /** + * Returns a HashMap of maker objects for this element mapping + * + * @return Table of Maker objects for this ElementMapping + */ + public HashMap getTable() { + if (foObjs == null) { + initialize(); + } + return foObjs; + } + + /** + * Returns the namespace URI for this element mapping + * + * @return Namespace URI for this element mapping + */ + public String getNamespaceURI() { + return URI; + } - void addToBuilder(FOTreeBuilder builder); + /** + * Initializes the set of maker objects associated with this ElementMapping + * + */ + protected abstract void initialize(); public static class Maker { public FONode make(FONode parent) { 1.2 +5 -13 xml-fop/src/java/org/apache/fop/fo/FOElementMapping.java Index: FOElementMapping.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOElementMapping.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FOElementMapping.java 11 Mar 2003 13:05:19 -0000 1.1 +++ FOElementMapping.java 12 Jul 2003 21:22:03 -0000 1.2 @@ -56,11 +56,13 @@ /** * Element mapping class for all XSL-FO elements. */ -public class FOElementMapping implements ElementMapping { +public class FOElementMapping extends ElementMapping { - private static HashMap foObjs = null; + public FOElementMapping() { + URI = "http://www.w3.org/1999/XSL/Format"; + } - private static synchronized void setupFO() { + protected void initialize() { if (foObjs == null) { foObjs = new HashMap(); @@ -148,16 +150,6 @@ foObjs.put("marker", new M()); foObjs.put("retrieve-marker", new RM()); } - - } - - /** - * @see org.apache.fop.fo.ElementMapping#addToBuilder(FOTreeBuilder) - */ - public void addToBuilder(FOTreeBuilder builder) { - setupFO(); - String uri = "http://www.w3.org/1999/XSL/Format"; - builder.addMapping(uri, foObjs); } static class R extends ElementMapping.Maker { 1.6 +2 -12 xml-fop/src/java/org/apache/fop/fo/FOTreeBuilder.java Index: FOTreeBuilder.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeBuilder.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FOTreeBuilder.java 4 Jul 2003 18:45:48 -0000 1.5 +++ FOTreeBuilder.java 12 Jul 2003 21:22:03 -0000 1.6 @@ -172,24 +172,14 @@ } /** - * Adds a mapping from a namespace to a table of makers. - * - * @param namespaceURI namespace URI of formatting object elements - * @param table table of makers - */ - public void addMapping(String namespaceURI, HashMap table) { - this.fobjTable.put(namespaceURI, table); - this.namespaces.add(namespaceURI.intern()); - } - - /** * Add the given element mapping. * An element mapping maps element names to Java classes. * * @param mapping the element mappingto add */ public void addElementMapping(ElementMapping mapping) { - mapping.addToBuilder(this); + this.fobjTable.put(mapping.getNamespaceURI(), mapping.getTable()); + this.namespaces.add(mapping.getNamespaceURI().intern()); } /** 1.4 +14 -24 xml-fop/src/java/org/apache/fop/svg/SVGElementMapping.java Index: SVGElementMapping.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/svg/SVGElementMapping.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SVGElementMapping.java 17 Jun 2003 16:35:57 -0000 1.3 +++ SVGElementMapping.java 12 Jul 2003 21:22:04 -0000 1.4 @@ -53,7 +53,6 @@ import java.util.HashMap; import org.apache.fop.fo.FONode; -import org.apache.fop.fo.FOTreeBuilder; import org.apache.fop.fo.ElementMapping; import org.apache.fop.apps.Driver; @@ -65,34 +64,25 @@ * This adds the svg element mappings used to create the objects * that create the SVG Document. */ -public class SVGElementMapping implements ElementMapping { - private static HashMap foObjs = null; - private static boolean batik = true; +public class SVGElementMapping extends ElementMapping { + private boolean batik = true; - private static synchronized void setupSVG() { - if (foObjs == null) { + public SVGElementMapping() { + URI = SVGDOMImplementation.SVG_NAMESPACE_URI; + } + + protected void initialize() { + if (foObjs == null && batik == true) { // this sets the parser that will be used // by default (SVGBrokenLinkProvider) // normally the user agent value is used - XMLResourceDescriptor.setXMLParserClassName( - Driver.getParserClassName()); - - foObjs = new HashMap(); - foObjs.put("svg", new SE()); - foObjs.put(DEFAULT, new SVGMaker()); - } - } - - /** - * Add the SVG element mappings to the tree builder. - * @param builder the FOTreeBuilder to add the mappings to - */ - public void addToBuilder(FOTreeBuilder builder) { - if (batik) { try { - setupSVG(); - String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; - builder.addMapping(svgNS, foObjs); + XMLResourceDescriptor.setXMLParserClassName( + Driver.getParserClassName()); + + foObjs = new HashMap(); + foObjs.put("svg", new SE()); + foObjs.put(DEFAULT, new SVGMaker()); } catch (Throwable t) { // if the classes are not available // the DISPLAY is not checked
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]