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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide 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 joko 1.1 ## -------------------------------------------------------------------------
2 joko 1.3 ## $Id: Abstract.pm,v 1.2 2003/04/04 17:25:51 joko Exp $
3 joko 1.1 ## -------------------------------------------------------------------------
4 joko 1.2 ## $Log: Abstract.pm,v $
5 joko 1.3 ## Revision 1.2 2003/04/04 17:25:51 joko
6     ## minor update regarding debugging output
7     ##
8 joko 1.2 ## Revision 1.1 2003/03/27 15:39:10 joko
9     ## initial commit, api metadata registration helper
10     ##
11 joko 1.1 ## -------------------------------------------------------------------------
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 joko 1.2 print __PACKAGE__, ": ", ref($self), " registers its API", "\n";
31 joko 1.1 #$logger->info( ref($self), " [$self]", " registers its API" );
32     #print Dumper($payload);
33     $self->_push_api($payload);
34     }
35    
36 joko 1.3 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 joko 1.1 sub _push_api {
45     my $self = shift;
46     my $payload = shift;
47     push @{$self->{api}}, @$payload;
48     }
49    
50 joko 1.3 sub _push_symbols {
51     my $self = shift;
52     my $payload = shift;
53     foreach (@$payload) {
54     push @{$self->{symbols}}, $_;
55     }
56     }
57    
58 joko 1.1 sub build {
59     my $self = shift;
60     my $plugins = shift;
61 joko 1.3
62     # 1. base api & symbols
63 joko 1.1 $self->_api_init();
64 joko 1.3 $self->_sym_init() if $self->can("_sym_init");
65    
66     # 2. api extensions (plugins)
67 joko 1.1 #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 joko 1.3 $self->_push_symbols($subapi->getSymbolMetadata()) if $subapi->can("getSymbolMetadata");
76 joko 1.1 }
77     }
78     #my @api_merged = (@$api_base, @api_ext);
79     #print Dumper(@api_merged);
80     #return \@api_merged;
81 joko 1.3
82 joko 1.1 return 1;
83     }
84    
85     sub getApiMetadata {
86     my $self = shift;
87     return $self->{api};
88 joko 1.3 }
89    
90     sub getSymbolMetadata {
91     my $self = shift;
92     return $self->{symbols};
93 joko 1.1 }
94    
95     1;
96     __END__

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