*/ interface PropertyDefinition extends ItemDefinition { /** * Gets the required type of the property. One of: *
PropertyType::STRING
PropertyType::DATE
PropertyType::BINARY
PropertyType::DOUBLE
PropertyType::LONG
PropertyType::BOOLEAN
PropertyType::NAME
PropertyType::PATH
PropertyType::REFERENCE
PropertyType::UNDEFINED
PropertyType.UNDEFINED
is returned if this property may be
* of any type.
*
* @return an int
*/
public function getRequiredType();
/**
* Gets the array of constraint strings. Each string in the array specifies
* a constraint on the value of the property. The constraints are OR-ed together,
* meaning that in order to be valid, the value must meet at least one of the
* constraints. For example, a constraint array of ["constraint1", "constraint2",
* "constraint3"]
has the interpretation: "the value of this property must
* meet either constraint1, constraint2 or constraint3".
*
* Reporting of value constraints is optional. An implementation may return
* null
, indicating that value constraint information is unavailable
* (though a constraint may still exist).
*
* In the case of multi-value properties, the constraint string array * returned applies to all the values of the property. *
* The constraint strings themselves having differing formats and interpretations * depending on the type of the property in question. The following describes the * value constraint syntax for each property type: *
STRING
: The constraint string is a regular expression pattern. For example the
* regular expression ".*
" means "any string, including the empty string". Whereas
* a simple literal string (without any RE-specific meta-characters) like "banana
"
* matches only the string "banana
".
* PATH
: The constraint string is a JCR path with an optional "*
" character after
* the last "/
" character. For example, possible constraint strings for a property
* of type PATH
include:
* /myapp:products/myapp:televisions
"
* /myapp:products/myapp:televisions/
"
* /myapp:products/*
"
* myapp:products/myapp:televisions
"
* ../myapp:televisions
"
* ../myapp:televisions/*
"
* /a/*
does not match /a/../c
.
* The constraint must match the normalized path.
* /
" has no effect (hence, 1
and 2
, above, are equivalent).
* *
" character means that the value of the PATH
property is
* restricted to the indicated subtree (in other words any additional relative path
* can replace the "*
"). For example, 3, above would allow
* /myapp:products/myapp:radios
, /myapp:products/myapp:microwaves/X900
, and so
* forth.
* *
" means that the PATH
property is restricted to that
* precise path. For example, 1
, above, would allow only the value
* /myapp:products/myapp:televisions
.
* /
" character. 1
and 4
, above for
* example, are distinct.
* Session
* (i.e., the current state of the namespace registry overlaid with any
* session-specific mappings). Constraint strings for PATH
properties should be
* stored in fully-qualified form (using the actual URI instead of the prefix) and
* then be converted to prefix form according to the current mapping upon the
* PropertyDefinition.getValueConstraints
call.
* NAME
: The constraint string is a JCR name in prefix form. For example
* "myapp:products
". No wildcards or other pattern matching are supported. As with
* PATH
properties, the string returned must reflect the namespace mapping in the
* current Session
. Constraint strings for NAME
properties should be stored in
* fully-qualified form (using the actual URI instead of the prefix) and then be
* converted to prefix form according to the current mapping.
* REFERENCE
: The constraint string is a JCR name in prefix form. This name is
* interpreted as a node type name and the REFERENCE
property is restricted to
* referring only to nodes that have at least the indicated node type. For
* example, a constraint of "mytype:document
" would indicate that the REFERENCE
* property in question can only refer to nodes that have at least the node type
* mytype:document
(assuming this was the only constraint returned in the array,
* recall that the array of constraints are to be "OR-ed" together). No wildcards or other
* pattern matching are supported. As with PATH
properties, the string returned
* must reflect the namespace mapping in the current Session
. Constraint strings
* for REFERENCE
properties should be stored in fully-qualified form (using the
* actual URI instead of the prefix) and then be converted to prefix form according to the
* current mapping.
* BOOLEAN
: Either "true
" or "false
".
* [min, max]
", "(min, max)
",
* "(min, max]
" or "[min, max)
". Where "[
"
* and "]
" indicate "inclusive", while "(
" and ")
"
* indicate "exclusive". A missing min
or max
value
* indicates no bound in that direction. For example [,5] means no minimum but a
* maximum of 5 (inclusive) while [,] means simply that any value will suffice,
* The meaning of the min
and max
values themselves
* differ between types as follows:
* BINARY
: min
and max
specify the allowed
* size range of the binary value in bytes.
* DATE
: min
and max
are dates specifying the
* allowed date range. The date strings must be in the ISO8601-compliant format:
* YYYY-MM-DDThh:mm:ss.sssTZD
.
* LONG
, DOUBLE
: min and max are numbers.
* String
array.
*/
public function getValueConstraints();
/**
* Gets the default value(s) of the property. These are the values
* that the property defined by this PropertyDefinition will be assigned if it
* is automatically created (that is, if {@link #isAutoCreate()}
* returns true
).
* * This method returns an array of Value objects. If the property is * multi-valued, then this array represents the full set of values * that the property will be assigned upon being auto-created. * Note that this could be the empty array. If the property is single-valued, * then the array returned will be of size 1. *
* Ifnull
is returned, then the property has no fixed default value.
* This does not exclude the possibility that the property still assumes some
* value automatically, but that value may be parameterized (for example,
* "the current date") and hence not expressable as a single fixed value.
* In particular, this must be the case if isAutoCreate
* returns true
and this method returns null
.
*
* @return an array of Value
objects.
*/
public function getDefaultValues();
/**
* Reports whether this property can have multiple values. Note that the
* isMultiple
flag is special in that a given node type may
* have two property definitions that are identical in every respect except
* for the their isMultiple
status. For example, a node type
* can specify two string properties both called X
, one of
* which is multi-valued and the other not.
*
* @return a boolean
*/
public function isMultiple();
}
?>