/[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.4 - (show annotations)
Wed Jun 25 23:36:27 2003 UTC (20 years, 10 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +5 -1 lines
minor update: comment

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

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