changeset 404:9ef75f2029be default

sync
author cin
date Fri, 28 Aug 2015 19:54:53 +0300
parents 7171a8e2e2ba
children cd6c6e61d442
files Lib/IMPL/Config/ActivationContext.pm Lib/IMPL/Config/Container.pm Lib/IMPL/Config/Descriptor.pm Lib/IMPL/Config/ReferenceDescriptor.pm Lib/IMPL/Config/ServiceDescriptor.pm Lib/IMPL/Config/ValueDescriptor.pm
diffstat 3 files changed, 107 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/IMPL/Config/ActivationContext.pm	Fri Aug 28 19:54:53 2015 +0300
@@ -0,0 +1,22 @@
+package IMPL::Config::ActivationContext;
+
+1;
+__END__
+
+=pod
+
+=head1 NAME
+
+C<IMPL::Config::ActivationContext> - an activation context for the service
+
+=head1 SYNOPSIS
+
+For the internal use only
+
+=head1 MEMBERS
+
+=head2 METHODS
+
+=head3 GetService($serviceId)
+
+=cut
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/IMPL/Config/Container.pm	Fri Aug 28 19:54:53 2015 +0300
@@ -0,0 +1,34 @@
+package IMPL::Config::Container;
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+C<IMPL::Config::Container> - dependency injection container
+
+=head1 SYNOPSIS
+
+=head2 METHODS
+
+=head3 GetService($serviceId)
+
+=over
+
+=item * $serviceId
+
+A string indetifier of the service, it can be in two forms: class name or service name,
+for the class name it should be prefixed with C<@>, for example: C<@Foo::Bar>.
+
+=back
+
+The activation container maintains two maps, one for classes and the other for names.
+The first one is useful when we searching for an implementation the second one when
+we need a particular service. 
+
+=head3 RegisterService($descriptor)
+
+=cut
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/IMPL/Config/Descriptor.pm	Fri Aug 28 19:54:53 2015 +0300
@@ -0,0 +1,51 @@
+package IMPL::Config::Descriptor;
+
+
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+C<IMPL::Config::Descriptor> - the abstract base types for the service descriptors 
+
+=head1 SYNOPSIS
+
+=begin code
+
+package MyDescriptor;
+
+use IMPL::declare {
+	base => {
+		'IMPL::Config::Descriptor' => '@_'
+	}
+};
+
+sub Activate {
+	my ($this,$context) = @_;
+	
+	my $service = $context->GetService('service');
+	my 
+	 
+}
+
+=end code
+
+=head1 MEMBERS
+
+=head1 SEE ALSO
+
+=over
+
+=item * L<ReferenceDescriptor> - describes a reference to the service
+
+=item * L<ServiceDescriptor> - descibes a service factory
+
+=item * L<ValueDescriptor> - describes a value
+
+=back
+
+=cut
\ No newline at end of file