Both Content
and Struct
are derived from a common parent interface
CapStruct
, which takes the same responsibilities as its
Unified API equivalent. It augments Bean
objects by providing a type in the form of a CapType
, the common parent of, for
example, ContentType
and StructType
. Types can be arranged in a
type hierarchy and they can be given a name.
A CapType
provides access to CapPropertyDescriptor
objects, which
describe the individual properties allowed for a CapObject
. In the
type
property a property descriptor indicates which value the property can take
according to the constants defined in CapPropertyDescriptorType
: string,
integer, markup, and so on. Each property descriptor also declares whether the property is
atomic
and accepts plain values or is a collection
and accepts
arrays of appropriate values.
For certain descriptor types, more specific interfaces provide access for additional
limitations on the property. A StringPropertyDescriptor
declares a
length
attribute indicating the maximum length of a string stored in the
property. A BlobPropertyDescriptor
can limit the contentType
(a
MIME type string) of the property values. A LinkPropertyDescriptor
specifies
the type of linked objects and a MarkupPropertyDescriptor
the grammar of stored
XML data.