gmazza      2004/01/02 14:37:09

  Modified:    src/java/org/apache/fop/fo PropertyList.java
  Log:
  Bug 25803 (patch by Simon Pepping):  Fix bug occurring when a compound property
  is specified (e.g. "leader-length.maximum") before its base property (e.g. 
"leader-length").
  
  Revision  Changes    Path
  1.14      +23 -9     xml-fop/src/java/org/apache/fop/fo/PropertyList.java
  
  Index: PropertyList.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/PropertyList.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- PropertyList.java 31 Dec 2003 01:41:46 -0000      1.13
  +++ PropertyList.java 2 Jan 2004 22:37:09 -0000       1.14
  @@ -216,7 +216,7 @@
        * @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 @@
           }
           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 @@
                                         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) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to