]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bug 25803 (patch by Simon Pepping): Fix bug occurring when a compound property
authorGlen Mazza <gmazza@apache.org>
Fri, 2 Jan 2004 22:37:09 +0000 (22:37 +0000)
committerGlen Mazza <gmazza@apache.org>
Fri, 2 Jan 2004 22:37:09 +0000 (22:37 +0000)
is specified (e.g. "leader-length.maximum") before its base property (e.g. "leader-length").

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197095 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/PropertyList.java

index adb88617f320d06c3c321af8f09012e0a6928ca4..02023b9f26eadfd8fae3f845be00eff2cfc12531 100644 (file)
@@ -216,7 +216,7 @@ public class PropertyList extends HashMap {
      * @return The value if the property is explicitly set, otherwise null.
      */
     public Property getExplicitBaseProp(String propertyName) {
-        return (Property)super.get(propertyName);
+        return (Property) super.get(propertyName);
     }
 
     /**
@@ -516,9 +516,18 @@ public class PropertyList extends HashMap {
         }
         try {
             Property prop = null;
-            if (subPropertyName == null) {
+            if (subPropertyName == null) { // base attribute only found
+                /* Do nothing if the base property has already been created.
+                 * This is e.g. the case when a compound attribute was
+                 * specified before the base attribute; in these cases
+                 * the base attribute was already created in 
+                 * findBaseProperty()
+                 */
+                if (getExplicitBaseProp(basePropertyName) != null) {
+                    return;
+                }
                 prop = propertyMaker.make(this, attributeValue, parentFO);
-            } else {
+            } else { // e.g. "leader-length.maximum"
                 Property baseProperty = findBaseProperty(attributes,
                         parentFO, basePropertyName, propertyMaker);
                 prop = propertyMaker.make(baseProperty, subPropertyName,
@@ -538,25 +547,30 @@ public class PropertyList extends HashMap {
                                       String basePropName,
                                       Maker propertyMaker)
             throws FOPException {
-        // If the baseProperty has already been created, return it
+
+        /* If the baseProperty has already been created, return it
+         * e.g. <fo:leader xxxx="120pt" xxxx.maximum="200pt"... />
+         */
         Property baseProperty = getExplicitBaseProp(basePropName);
         if (baseProperty != null) {
             return baseProperty;
         }
-        // If it is specified later in this list of Attributes, create it
+
+        /* Otherwise If it is specified later in this list of Attributes, create it now
+         * e.g. <fo:leader xxxx.maximum="200pt" xxxx="200pt"... />
+         */
         String basePropertyValue = attributes.getValue(basePropName);
         
         if (basePropertyValue != null) {
-            int propertyId = FOPropertyMapping.getPropertyId(basePropertyValue);
+            int propertyId = FOPropertyMapping.getPropertyId(basePropName);
             if (propertyId != -1) {
                 baseProperty = propertyMaker.make(this, basePropertyValue,
                     parentFO);
                 return baseProperty;
             }
         }
-        // Otherwise it is a compound property ??
-        // baseProperty = propertyMaker.makeCompound(propertyList, parentFO);
-        return baseProperty;
+        
+        return null;  // could not find base property
     }
 
     private void handleInvalidProperty(String attributeName) {