# Property classes overview

by Peter B. West

- Properties: packages
  - org.apache.fop.fo
  - org.apache.fop.fo.properties
  - org.apache.fop.fo.expr
  - org.apache.fop.datatypes
  - org.apache.fop.datatypes.indirect

### Properties: packages

#### org.apache.fop.fo

PropNames
  This class maintains an array of property names, synchronized to a complete set of property name constants for indexing property-based arrays. It includes methods to convert an index to a name and to convert a property name to an index.
PropertyConsts
  A singleton instance of PropertyConsts is created by the static initializer of the pconsts field. Working from the property indices defined in PropNames, the methods in this class collect and supply the values of fields defined in property objects into arrays.
  The heart of this class in the method setupProperty, which constructs the property name from the index, instantiates a singleton of the appropriate class, and extracts static fields by reflection from that instance into the arrays of field values.
PropertySets
  This class provides a number of ROBitSets representing many of the sets of properties defined in Section 7 of the specification. Note that the Border, Padding and Background sets are defined separately.
FOPropertySets
  This class provides a number of ROBitSets representing sets of properties which are applicable in particular subtrees of the FO tree. These sets are provided so that other properties can be ignored during processing of the subtrees.
ShorthandPropSets
  This class contains arrays of shorthand property indices and compound property indices, and ROBitSets representing the expansion sets of these shorthands and compounds. Various methods useful in the expansion of these properties are also included.
FOAttributes
  This class manages the attribute set that is associated with a SAX startElement event. fo: namespace attributes are entered into a HashMap, indexed by the fo: property index. As other namespaces are encountered, the values are entered into namespace-specific HashMaps, indexed by the local name of the attribute.

#### org.apache.fop.fo.properties

Property
  The base class for all individual property classes. There are 320 properties in all.
ColumnNumber
  The actual property class with the lowest index number, followed in the index order by properties required for further processing, e.g. FontSize.
....
  ....
Background
  First in index order of the remainining shorthand properties, followed in index order by all other remaining shorthands.
....
  ....
AbsolutePosition
  First in index order of the remaining properties. Within this ordering, compound properties precede their expansion properties, and corresponding relative properties precede corresponding absolute properties.
....
  ....
ZIndex
  The property class with the highest index number.

#### org.apache.fop.fo.expr

PropertyTokenizer
  The tokenizer for the property expression parser. Defines a set of token constants and returns these with associated token values.
PropertyParser
  This extends PropertyTokenizer. It parses property expressions on the basis of the tokens passed to it by its superclass, generating PropertyValues, including PropertyValueLists.
PropertyException
  The basic class for all property-related exceptions. It extends FOPException. It is housed in this package by historical accident.
DataTypeNotImplementedException
FunctionNotImplementedException
PropertyNotImplementedException
  A set of particular exceptions extending PropertyException. Also in this package by accident.

#### org.apache.fop.datatypes

PropertyValue
  An interface which all PropertyValue classes must implement. In addition to a few methods, PropertyValue defines the set of constants which the getType() method may return; i.e. the valid set of PropertyValue types.
AbstractPropertyValue
  An abstract implementation of the PropertyValue interface. Most actual property value classes extend AbstractPropertyValue.
PropertyValueList
  This class extends LinkedList and implements PropertyValue. It is used whenever the process of resolving a property expression yields a list of PropertyValue elements; notably during the processing of shorthands and "compound" properties.
StringType
  A basic type extending AbstractPropertyValue. Extended by NCName.
NCName
  Extends StringType to represent NCName strings.
EnumType
  Extends AbstractPropertyValue to represented enumerated types.
Other types
  All other types extend one of the above classes.

#### org.apache.fop.datatypes.indirect

IndirectValue
  The base type for all indirect value types; extends AbstractPropertyValue.

Previous: Introduction

Next: The PropertyConsts class