NAME

Repository::Simple::Type::Property - Types for repository properties

SYNOPSIS

See "SYNOPSIS" in Repository::Simple::Type::Node.

DESCRIPTION

Property types are used to determine information about what kind of information is acceptable for a property and how it may be updated. This class provides a flexible way of describing the possible values, a method for marshalling and unmarshalling those values to and from a scalar for storage, and other metadata about possible values.

METHODS

$type = Repository::Simple::Type::Property->new(%args)

Creates a new property type with the given arguments, %args.

The following arguments are used:

engine (required)

This is a reference to the storage engine owning this property type.

name (required)

This is a short identifying name for the type. This should be a fully qualified name, e.g., "ns:name".

auto_created

This property should be set to true if the creation of a node containing a property of this type triggers the creation of a property of this type.

By default, this value is false.

updatable

This property should be set to true if the value stored in the property cannot be changed.

By default, this value is false.

removable

When this property is set to a true value, this property may not be set to undef or deleted.

By default, this value is false.

value_type

This property should be set to an instance of Repository::Simple::Type::Value for the type of value that is stored in it.

By default, this is set to an instance of Repository::Simple::Type::Value::Scalar.

$name = $type->name

This method returns the name of the type.

$auto_created = $type->auto_created

Returns a true value if the property is automatically created with the parent.

$updatable = $type->updatable

Returns a true value if the value may be changed.

$removable = $type->removable

Returns a true value if the value may be removed from it's parent node.

$value_type = $type->value_type

Returns the value type of the properties value.

AUTHOR

Andrew Sterling Hanenkamp, <hanenkamp@cpan.org>

LICENSE AND COPYRIGHT

Copyright 2005 Andrew Sterling Hanenkamp <hanenkamp@cpan.org>. All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.