*/ interface PropertyDefinition extends ItemDefinition { /** * Gets the required type of the property. One of: * * 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). *

* Returning an empty array, on the other hand, indicates that value constraint information * is available and that no constraints are placed on this value. *

* 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: *

* The remaining types all have value constraints in the form of inclusive or * exclusive ranges: i.e., "[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: * * Because constraints are returned as an array of disjunctive constraints, * in many cases the elements of the array can serve directly as a "choice list". * This may, for example, be used by an application to display options to the * end user indicating the set of permitted values. * * @return a 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. *

* If null 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(); } ?>