=encoding utf8

=head1 NAME

User::Identity::Archive - base class for archiving user information


   is an User::Identity::Item

 User::Identity::Archive is extended by


 use User::Identity::Archive::Plain;
 my $friends = User::Identity::Archive::Plain->new('friends');


An archive stores collections. It depends on the type of archive how and
where that is done.  Some archivers may limit the kinds of selections
which can be stored.

Extends L<"DESCRIPTION" in User::Identity::Item|User::Identity::Item/"DESCRIPTION">.

=head1 METHODS

Extends L<"METHODS" in User::Identity::Item|User::Identity::Item/"METHODS">.
=head2 Constructors

Extends L<"Constructors" in User::Identity::Item|User::Identity::Item/"Constructors">.
=over 4

=item User::Identity::Archive-E<gt>B<new>( [$name], %options )

 -Option     --Defined in          --Default
  description  User::Identity::Item  undef
  from                               undef
  name         User::Identity::Item  <required>
  parent       User::Identity::Item  undef

=over 2

=item description => STRING


=item name => STRING

=item parent => OBJECT



=head2 Attributes

Extends L<"Attributes" in User::Identity::Item|User::Identity::Item/"Attributes">.
=over 4

=item $obj-E<gt>B<description>()

Inherited, see L<User::Identity::Item/"Attributes">

=item $obj-E<gt>B<name>( [$newname] )

Inherited, see L<User::Identity::Item/"Attributes">


=head2 Collections

Extends L<"Collections" in User::Identity::Item|User::Identity::Item/"Collections">.
=over 4

=item $obj-E<gt>B<add>($collection, $role)

Inherited, see L<User::Identity::Item/"Collections">

=item $obj-E<gt>B<addCollection>( $object | <[$type], %options> )

Inherited, see L<User::Identity::Item/"Collections">

=item $obj-E<gt>B<collection>($name)

Inherited, see L<User::Identity::Item/"Collections">

=item $obj-E<gt>B<parent>( [$parent] )

Inherited, see L<User::Identity::Item/"Collections">

=item $obj-E<gt>B<removeCollection>($object|$name)

Inherited, see L<User::Identity::Item/"Collections">

=item $obj-E<gt>B<type>()

=item User::Identity::Archive-E<gt>B<type>()

Inherited, see L<User::Identity::Item/"Collections">

=item $obj-E<gt>B<user>()

Inherited, see L<User::Identity::Item/"Collections">


=head2 Searching

Extends L<"Searching" in User::Identity::Item|User::Identity::Item/"Searching">.
=over 4

=item $obj-E<gt>B<find>($collection, $role)

Inherited, see L<User::Identity::Item/"Searching">


=head2 Access to the archive

=over 4

=item $obj-E<gt>B<from>($source, %options)

Read definitions from the specified $source, which usually can be a
filehandle or filename.  The syntax used in the information $source
is archiver dependent.

Not all archivers implement C<from()>, so you may want to check with
C<UNIVERSAL::can()> beforehand.


 use User::Identity::Archive::Some;
 my $a = User::Identity::Archive::Some->new('xyz');
 $a->from(\*STDIN) if $a->can('from');



=over 4

=item Error: $object is not a collection.

The first argument is an object, but not of a class which extends

=item Error: Cannot load collection module for $type ($class).

Either the specified $type does not exist, or that module named $class returns
compilation errors.  If the type as specified in the warning is not
the name of a package, you specified a nickname which was not defined.
Maybe you forgot the 'require' the package which defines the nickname.

=item Error: Creation of a collection via $class failed.

The $class did compile, but it was not possible to create an object
of that class using the options you specified.

=item Error: Don't know what type of collection you want to add.

If you add a collection, it must either by a collection object or a
list of options which can be used to create a collection object.  In
the latter case, the type of collection must be specified.

=item Warning: No collection $name

The collection with $name does not exist and can not be created.


=head1 SEE ALSO

This module is part of User-Identity distribution version 1.00,
built on October 14, 2020. Website: F<http://perl.overmeer.net/CPAN/>

=head1 LICENSE

Copyrights 2003-2020 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://dev.perl.org/licenses/>