| File: | /home/mik/work/module/Tivoli/AccessManager/Admin.pm |
| Coverage: | 98.6% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package Tivoli::AccessManager::Admin; | ||||||
| 2 | 15 15 15 | 269 89 332 | use Tivoli::AccessManager::Admin::ACL; | ||||
| 3 | 15 15 15 | 348 86 327 | use Tivoli::AccessManager::Admin::Action; | ||||
| 4 | 15 15 15 | 324 101 342 | use Tivoli::AccessManager::Admin::AuthzRule; | ||||
| 5 | 15 15 15 | 351 99 370 | use Tivoli::AccessManager::Admin::Context; | ||||
| 6 | 15 15 15 | 390 96 515 | use Tivoli::AccessManager::Admin::Domain; | ||||
| 7 | 15 15 15 | 343 88 351 | use Tivoli::AccessManager::Admin::Group; | ||||
| 8 | 15 15 15 | 345 106 328 | use Tivoli::AccessManager::Admin::Objectspace; | ||||
| 9 | 15 15 15 | 352 96 375 | use Tivoli::AccessManager::Admin::POP; | ||||
| 10 | 15 15 15 | 325 65 252 | use Tivoli::AccessManager::Admin::ProtObject; | ||||
| 11 | 15 15 15 | 341 115 362 | use Tivoli::AccessManager::Admin::Server; | ||||
| 12 | 15 15 15 | 387 108 437 | use Tivoli::AccessManager::Admin::User; | ||||
| 13 | 15 15 15 | 379 96 388 | use Tivoli::AccessManager::Admin::SSO::Web; | ||||
| 14 | 15 15 15 | 404 94 319 | use Tivoli::AccessManager::Admin::SSO::Group; | ||||
| 15 | 15 15 15 | 366 89 336 | use Tivoli::AccessManager::Admin::SSO::Cred; | ||||
| 16 | |||||||
| 17 | $Tivoli::AccessManager::Admin::VERSION = '0.01'; | ||||||
| 18 | 15 | 225 | use Inline( C => 'DATA', | ||||
| 19 | 15 15 | 287 63 | NAME => 'Tivoli::AccessManager::Admin' ); | ||||
| 20 | |||||||
| 21 | my %dispatch = ( | ||||||
| 22 | acl => 'Tivoli::AccessManager::Admin::ACL', | ||||||
| 23 | action => 'Tivoli::AccessManager::Admin::Action', | ||||||
| 24 | authzrule => 'Tivoli::AccessManager::Admin::AuthzRule', | ||||||
| 25 | context => 'Tivoli::AccessManager::Admin::Context', | ||||||
| 26 | group => 'Tivoli::AccessManager::Admin::Group', | ||||||
| 27 | objectspace => 'Tivoli::AccessManager::Admin::Objectspace', | ||||||
| 28 | 'pop' => 'Tivoli::AccessManager::Admin::POP', | ||||||
| 29 | protobject => 'Tivoli::AccessManager::Admin::ProtObject', | ||||||
| 30 | server => 'Tivoli::AccessManager::Admin::Server', | ||||||
| 31 | user => 'Tivoli::AccessManager::Admin::User; ', | ||||||
| 32 | ssoweb => 'Tivoli::AccessManager::Admin::SSO::Web', | ||||||
| 33 | ssocred => 'Tivoli::AccessManager::Admin::SSO::Cred', | ||||||
| 34 | ); | ||||||
| 35 | |||||||
| 36 | |||||||
| 37 | sub new { | ||||||
| 38 | 17 | 0 | 117 | my $class = shift; # Ignore this. | |||
| 39 | 17 | 109 | my $desired = lc shift; | ||||
| 40 | 17 | 203 | if ( defined $dispatch{ $desired } ) { | ||||
| 41 | 2 | 43 | return $dispatch{$desired}->new( @_ ); | ||||
| 42 | } | ||||||
| 43 | else { | ||||||
| 44 | 15 | 305 | return Tivoli::AccessManager::Admin::Context->new( $desired, @_ ); | ||||
| 45 | } | ||||||
| 46 | } | ||||||
| 47 | |||||||
| 48 | 1; | ||||||
| 49 | |||||||
| 50 - 171 | =head1 NAME
Tivoli::AccessManager::Admin
=head1 SYNOPSIS
use Tivoli::AccessManager::Admin
# Do cool and wicked TAM things
=head1 DESCRIPTION
B<Tivoli::AccessManager::Admin> is a convenience module. You can simply B<use> it and have access to:
=over 4
=item L<Tivoli::AccessManager::Admin::Context|Tivoli::AccessManager::Admin::Context>
=item L<Tivoli::AccessManager::Admin::Response|Tivoli::AccessManager::Admin::Response>
=item L<Tivoli::AccessManager::Admin::ACL|Tivoli::AccessManager::Admin::ACL>
=item L<Tivoli::AccessManager::Admin::Action|Tivoli::AccessManager::Admin::Action>
=item L<Tivoli::AccessManager::Admin::Authzrule|Tivoli::AccessManager::Admin::Authzrule>
=item L<Tivoli::AccessManager::Admin::Group|Tivoli::AccessManager::Admin::Group>
=item L<Tivoli::AccessManager::Admin::Objectspace|Tivoli::AccessManager::Admin::Objectspace>
=item L<Tivoli::AccessManager::Admin::POP|Tivoli::AccessManager::Admin::POP>
=item L<Tivoli::AccessManager::Admin::ProtObject|Tivoli::AccessManager::Admin::ProtObject>
=item L<Tivoli::AccessManager::Admin::Server|Tivoli::AccessManager::Admin::Server>
=item L<Tivoli::AccessManager::Admin::User|Tivoli::AccessManager::Admin::User>
=item L<Tivoli::AccessManager::Admin::SSO::Web|Tivoli::AccessManager::Admin::SSO::Web>
=item L<Tivoli::AccessManager::Admin::SSO::Cred|Tivoli::AccessManager::Admin::SSO::Cred>
Each of these objects provide access to the equivalent calls in the TAM API.
See the documentation for each of these modules for more information.
=over 4
=head1 Unimplemented
You may have noticed from the previous list that I have not yet implemented
the full API. I still need to write:
=over 4
=item B<Tivoli::AccessManager::Admin::Config>
This module will be written, but I just haven't gotten there yet.
=item B<Tivoli::AccessManager::Admin::AccessOutdata>
=item B<Tivoli::AccessManager::Admin::Context::cleardelcred>
=item B<Tivoli::AccessManager::Admin::Context::hasdelcred>
=item B<Tivoli::AccessManager::Admin::ProtObject::access>
=item B<Tivoli::AccessManager::Admin::ProtObject::multiaccess>
The first is a class and the following are methods. They are not implemented
due to my own ignorance. I vaguely understand what they are supposed to do,
but I just cannot figure out how to implement them.
=back
=head1 TODO
=over 4
=item *
Implement the missing objects
=item *
Basic clean up. Most of this code was written as I was learning. I think you
can see my style evolve from B<Tivoli::AccessManager::Admin::Context> to
B<Tivoli::AccessManager::Admin::User>. I would like to make it consistent.
=head1 SEE ALSO
L<Tivoli::AccessManager::Admin::Context|Tivoli::AccessManager::Admin::Context>, L<Tivoli::AccessManager::Admin::Response|Tivoli::AccessManager::Admin::Response>, L<Tivoli::AccessManager::Admin::ACL|Tivoli::AccessManager::Admin::ACL>, L<Tivoli::AccessManager::Admin::Action|Tivoli::AccessManager::Admin::Action>, L<Tivoli::AccessManager::Admin::Authzrule|Tivoli::AccessManager::Admin::Authzrule>, L<Tivoli::AccessManager::Admin::Group|Tivoli::AccessManager::Admin::Group>, L<Tivoli::AccessManager::Admin::Objectspace|Tivoli::AccessManager::Admin::Objectspace>, L<Tivoli::AccessManager::Admin::POP|Tivoli::AccessManager::Admin::POP>, L<Tivoli::AccessManager::Admin::ProtObject|Tivoli::AccessManager::Admin::ProtObject>, L<Tivoli::AccessManager::Admin::Server|Tivoli::AccessManager::Admin::Server>, L<Tivoli::AccessManager::Admin::User|Tivoli::AccessManager::Admin::User>, L<Tivoli::AccessManager::Admin::SSO::Web|Tivoli::AccessManager::Admin::SSO::Web>, L<Tivoli::AccessManager::Admin::SSO::Cred|Tivoli::AccessManager::Admin::SSO::Cred>
=head1 ACKNOWLEDGEMENTS
None of this would have been possible if not for Brian Ingerson's B<Inline::C>.
Major thanks to Michael G Schwern's B<Test::More> -- the code would have been
a lot buggier without running everything through Test::More.
An equal share of thanks and curses goes to Paul Johnson for B<Devel::Cover>.
I cannot count the number of bugs this module helped me find or the number of
times I cursed it for keeping me up to 3:00 am saying "I will go to bed after
I get just one more percent branch coverage". Those who use it know what I mean.
=head1 BUGS
None known yet.
=head1 AUTHOR
Mik Firestone E<lt>mikfire@gmail.comE<gt>
=head1 COPYRIGHT
Copyright (c) 2004-2011 Mik Firestone. All rights reserved. This program is
free software; you can redistibute it and/or modify it under the same terms as
Perl itself.
All references to TAM, Tivoli Access Manager, etc are copyrighted, trademarked
and otherwise patented by IBM.
=cut | ||||||
| 172 | |||||||