/[cvs]/nfo/perl/libs/OEF/API/Abstract.pm
ViewVC logotype

Contents of /nfo/perl/libs/OEF/API/Abstract.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations)
Fri Jun 6 03:22:34 2003 UTC (21 years, 1 month ago) by joko
Branch: MAIN
Changes since 1.2: +32 -4 lines
new: now capable of registering symbols along with api methods

1 ## -------------------------------------------------------------------------
2 ## $Id: Abstract.pm,v 1.2 2003/04/04 17:25:51 joko Exp $
3 ## -------------------------------------------------------------------------
4 ## $Log: Abstract.pm,v $
5 ## Revision 1.2 2003/04/04 17:25:51 joko
6 ## minor update regarding debugging output
7 ##
8 ## Revision 1.1 2003/03/27 15:39:10 joko
9 ## initial commit, api metadata registration helper
10 ##
11 ## -------------------------------------------------------------------------
12
13
14 package OEF::API::Abstract;
15
16 use strict;
17 use warnings;
18
19 use Data::Dumper;
20
21 sub new {
22 my $self = shift;
23 #$self->_api_init();
24 }
25
26 sub register {
27 my $self = shift;
28 my $payload = shift;
29 #print ref($self), " [$self] registers its API", "\n";
30 print __PACKAGE__, ": ", ref($self), " registers its API", "\n";
31 #$logger->info( ref($self), " [$self]", " registers its API" );
32 #print Dumper($payload);
33 $self->_push_api($payload);
34 }
35
36 sub register_symbols {
37 my $self = shift;
38 my $payload = shift;
39 print __PACKAGE__, ": ", ref($self), " registers its Symbols", "\n";
40 #print Dumper($payload);
41 $self->_push_symbols($payload);
42 }
43
44 sub _push_api {
45 my $self = shift;
46 my $payload = shift;
47 push @{$self->{api}}, @$payload;
48 }
49
50 sub _push_symbols {
51 my $self = shift;
52 my $payload = shift;
53 foreach (@$payload) {
54 push @{$self->{symbols}}, $_;
55 }
56 }
57
58 sub build {
59 my $self = shift;
60 my $plugins = shift;
61
62 # 1. base api & symbols
63 $self->_api_init();
64 $self->_sym_init() if $self->can("_sym_init");
65
66 # 2. api extensions (plugins)
67 #my @api_ext;
68 foreach (@$plugins) {
69 my $subapi = DesignPattern::Object->fromPackage($_);
70 #next;
71 if ($subapi->build()) {
72 #push @api_ext, @$subapi_metadata;
73 #$self->register($subapi->getApiMetadata());
74 $self->_push_api($subapi->getApiMetadata());
75 $self->_push_symbols($subapi->getSymbolMetadata()) if $subapi->can("getSymbolMetadata");
76 }
77 }
78 #my @api_merged = (@$api_base, @api_ext);
79 #print Dumper(@api_merged);
80 #return \@api_merged;
81
82 return 1;
83 }
84
85 sub getApiMetadata {
86 my $self = shift;
87 return $self->{api};
88 }
89
90 sub getSymbolMetadata {
91 my $self = shift;
92 return $self->{symbols};
93 }
94
95 1;
96 __END__

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed