+ Package module for the Poodinis Dependency Injection framework.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/js/script.min.js b/docs/js/script.min.js
new file mode 100644
index 0000000..02d1112
--- /dev/null
+++ b/docs/js/script.min.js
@@ -0,0 +1 @@
+function setupDdox(){for(var e=document.querySelectorAll(".tree-view .package"),t=0;t=0;t--)for(u in a)if(e[t].length>=a[u].length&&e[t].substr(0,a[u].length)==a[u])return e.length-1-t;return e.length}function n(e,t){var n=e.attributes.indexOf("deprecated")>=0,r=t.attributes.indexOf("deprecated")>=0;if(n!=r)return n-r;var s=e.name.toLowerCase(),i=t.name.toLowerCase(),o=s.split("."),h=i.split("."),c=o[o.length-1],d=h[h.length-1],u=a.indexOf(c)>=0,g=a.indexOf(d)>=0;if(u!=g)return g-u;var f=l(o),m=l(h);return f!=m?f-m:o.lengthh.length?1:c.lengthd.length?1:si?1:0}var r=function(e){return document.getElementById(e)};"undefined"===e&&(e=26),void 0===t&&(t=40);var s=r("symbolSearch").value.toLowerCase();if(s!=lastSearchString){lastSearchString=s;++searchCounter;r("symbolSearchResults").style.display="none",r("symbolSearchResults").innerHTML="",r("symbolSearch").classList.remove("with_results");var a=s.trim().split(/\s+/);if(!(0==a.length||1==a.length&&a[0].length<2)){for(var i=[],o=0;o0&&f[m-1].length+p.length<=e;)m--,p="."+f[m]+p;p=m>0?".."+p:p.substr(1);var y=document.createElement("a");y.setAttribute("href",symbolSearchRootDir+h.path),y.setAttribute("title",g),y.setAttribute("tabindex",1001),y.textContent=p,d.appendChild(y),r("symbolSearchResults").appendChild(d)}if(i.length>t){var b=document.createElement("li");b.innerHTML="…"+(i.length-100)+" additional results",r("symbolSearchResults").appendChild(b)}i.length&&(r("symbolSearchResults").style.display="initial",r("symbolSearch").classList.add("with_results"))}}}var searchCounter=0,lastSearchString="";
diff --git a/docs/poodinis.html b/docs/poodinis.html
new file mode 100644
index 0000000..a0edfb5
--- /dev/null
+++ b/docs/poodinis.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Module poodinis
+
+
+
+
+
+
+
+
+
Module poodinis
Package module for the Poodinis Dependency Injection framework.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/autowire.html b/docs/poodinis/autowire.html
new file mode 100644
index 0000000..4cb6799
--- /dev/null
+++ b/docs/poodinis/autowire.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+ Module poodinis.autowire
+
+
+
+
+
+
+
+
+
Module poodinis.autowire
Contains functionality for autowiring dependencies using a dependency container.
+
This module is used in a dependency container for autowiring dependencies when resolving them.
+ You typically only need this module if you want inject dependencies into a class instance not
+ managed by a dependency container.
+
+
+
Part of the Poodinis Dependency Injection framework.
+
UDA for marking autowired dependencies optional.
+ Optional dependencies will not lead to a resolveException when there is no type registered for them.
+ The member will remain null.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/autowire/AssignNewInstance.html b/docs/poodinis/autowire/AssignNewInstance.html
new file mode 100644
index 0000000..1b12ef5
--- /dev/null
+++ b/docs/poodinis/autowire/AssignNewInstance.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Struct AssignNewInstance
+
+
+
+
+
+
+
+
+
Struct AssignNewInstance
UDA for annotating class members to be autowired with a new instance regardless of their registration scope.
+
+
+
+
+ structAssignNewInstance
+ ;
+
+
+
+
+
+
Examples
+
class Car {
+ @Autowire
+ @AssignNewInstance
+ public Antenna antenna;
+}
+
antenna will always be assigned a new instance of class Antenna.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/autowire/Autowire.html b/docs/poodinis/autowire/Autowire.html
new file mode 100644
index 0000000..0341fd0
--- /dev/null
+++ b/docs/poodinis/autowire/Autowire.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+ Struct Autowire
+
+
+
+
+
+
+
+
+
Struct Autowire
UDA for annotating class members as candidates for autowiring.
+
+
+
+
+ structAutowire(QualifierType)
+ ;
+
+
+
+
Optionally a template parameter can be supplied to specify the type of a qualified class. The qualified type
+ of a concrete class is used to autowire members declared by supertype. If no qualifier is supplied, the type
+ of the member is used as qualifier.
+
+
+
+
Examples
+
Annotate member of class to be autowired:
+
+
class Car {
+ @Autowire
+ public Engine engine;
+}
The members of an instance of "HybridCar" will now be autowired properly, because the autowire mechanism will
+ autowire member "fuelEngine" as if it's of type "FuelEngine". This means that the members of instance "fuelEngine"
+ will also be autowired because the autowire mechanism knows that member "fuelEngine" is an instance of "FuelEngine"
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/autowire/OptionalDependency.html b/docs/poodinis/autowire/OptionalDependency.html
new file mode 100644
index 0000000..ba8ea94
--- /dev/null
+++ b/docs/poodinis/autowire/OptionalDependency.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+ Struct OptionalDependency
+
+
+
+
+
+
+
+
+
Struct OptionalDependency
UDA for marking autowired dependencies optional.
+ Optional dependencies will not lead to a resolveException when there is no type registered for them.
+ The member will remain null.
+
+
+
+
+ structOptionalDependency
+ ;
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/autowire/autowire.html b/docs/poodinis/autowire/autowire.html
new file mode 100644
index 0000000..b70aca3
--- /dev/null
+++ b/docs/poodinis/autowire/autowire.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+ Function autowire
+
+
+
+
+
+
+
+
+
Function autowire
Autowires members of a given instance using dependencies registered in the given container.
+
All members of the given instance, which are annotated using the "Autowire" UDA, are autowired.
+ Members can have any visibility (public, private, etc). All members are resolved using the given
+ container. Qualifiers are used to determine the type of class to resolve for any member of instance.
+
+
+
+
See Also
+
Autowire
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/autowire/globalAutowire.html b/docs/poodinis/autowire/globalAutowire.html
new file mode 100644
index 0000000..5f67b14
--- /dev/null
+++ b/docs/poodinis/autowire/globalAutowire.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Function globalAutowire
+
+
+
+
+
+
+
+
+
Function globalAutowire
Autowire the given instance using the globally available dependency container.
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/container/DependencyContainer.html b/docs/poodinis/container/DependencyContainer.html
new file mode 100644
index 0000000..8ba76d7
--- /dev/null
+++ b/docs/poodinis/container/DependencyContainer.html
@@ -0,0 +1,221 @@
+
+
+
+
+
+ Class DependencyContainer
+
+
+
+
+
+
+
+
+
Class DependencyContainer
The dependency container maintains all dependencies registered with it.
+
+
+
+
+ classDependencyContainer
+ ;
+
+
+
+
Dependencies registered by a container can be resolved as long as they are still registered with the container.
+ Upon resolving a dependency, an instance is fetched according to a specific scope which dictates how instances of
+ dependencies are created. Resolved dependencies will be autowired before being returned.
+
+
+
In most cases you want to use a global singleton dependency container provided by getInstance() to manage all dependencies.
+ You can still create new instances of this class for exceptional situations.
+
A dependency registered by concrete class type can only be resolved by concrete class type.
+ No qualifiers can be used when resolving dependencies which are registered by concrete type.
+
+
+
The default registration scope is "single instance" scope.
+
+
+
+
Returns
+
A registration is returned which can be used to change the registration scope.
+
+
+
Examples
+
Register and resolve a class by concrete type:
+
+
class Cat : Animal { ... }
+container.register!Cat;
A dependency registered by super type can only be resolved by super type. A qualifier is typically
+ used to resolve dependencies registered by super type.
+
+
+
The default registration scope is "single instance" scope.
+
+
+
+
Examples
+
Register and resolve by super type
+
+
class Cat : Animal { ... }
+container.register!(Animal, Cat);
You cannot resolve a dependency when it is registered by multiple super types:
+
+
class Cat : Animal { ... }
+class Dog : Animal { ... }
+
+container.register!(Animal, Cat);
+container.register!(Animal, Dog);
+
+container.resolve!Animal; // Error: multiple candidates for type "Animal"
+container.resolve!Dog; // Error: No type is registered by concrete type "Dog", only by super type "Animal"
+
You need to use the resolve method which allows you to specify a qualifier.
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/container/PostConstruct.html b/docs/poodinis/container/PostConstruct.html
new file mode 100644
index 0000000..26934ac
--- /dev/null
+++ b/docs/poodinis/container/PostConstruct.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+ Struct PostConstruct
+
+
+
+
+
+
+
+
+
Struct PostConstruct
Methods marked with this UDA within dependencies are called after that dependency
+ is constructed by the dependency container.
+
+
+
+
+ structPostConstruct
+ ;
+
+
+
+
Multiple methods can be marked and will all be called after construction. The order in which
+ methods are called is undetermined. Methods should have the signature void(void).
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/container/PreDestroy.html b/docs/poodinis/container/PreDestroy.html
new file mode 100644
index 0000000..b874768
--- /dev/null
+++ b/docs/poodinis/container/PreDestroy.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+ Struct PreDestroy
+
+
+
+
+
+
+
+
+
Struct PreDestroy
Methods marked with this UDA within dependencies are called before the container
+ loses the dependency's registration.
+
+
+
+
+ structPreDestroy
+ ;
+
+
+
+
This method is called when removeRegistration or clearAllRegistrations is called.
+ It will also be called when the container's destructor is called.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/container/RegistrationException.html b/docs/poodinis/container/RegistrationException.html
new file mode 100644
index 0000000..fe3a752
--- /dev/null
+++ b/docs/poodinis/container/RegistrationException.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+ Class RegistrationException
+
+
+
+
+
+
+
+
+
Class RegistrationException
Exception thrown when errors occur while registering a type in a dependency container.
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/container/ResolveOption.html b/docs/poodinis/container/ResolveOption.html
new file mode 100644
index 0000000..788fb34
--- /dev/null
+++ b/docs/poodinis/container/ResolveOption.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+ Enum ResolveOption
+
+
+
+
+
+
+
+
+
Enum ResolveOption
Options which influence the process of resolving dependencies
+
+
+
+
+ enumResolveOption
+ :int{ ... }
+
+
+
+
+
Enum members
+
+
+
+
Name
Description
+
+
+
+ noResolveException
+
+
Does not throw a resolve exception when a type is not registered but will
+ return null instead. If the type is an array, an empty array is returned instead.
+
+
+
+
+ registerBeforeResolving
+
+
Registers the type you're trying to resolve before returning it.
+ This essentially makes registration optional for resolving by concerete types.
+ Resolinvg will still fail when trying to resolve a dependency by supertype.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/context.html b/docs/poodinis/context.html
new file mode 100644
index 0000000..46ede30
--- /dev/null
+++ b/docs/poodinis/context.html
@@ -0,0 +1,156 @@
+
+
+
+
+
+ Module poodinis.context
+
+
+
+
+
+
+
+
+
Module poodinis.context
Contains the implementation of application context setup.
+
Part of the Poodinis Dependency Injection framework.
+
Components with the prototype registration will be scoped as dependencies which will create
+ new instances every time they are resolved. The factory method will be called repeatedly.
+
This annotation allows you to specify by which super type the component should be registered. This
+ enables you to use type-qualified alternatives for dependencies.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/context/Component.html b/docs/poodinis/context/Component.html
new file mode 100644
index 0000000..5250ed7
--- /dev/null
+++ b/docs/poodinis/context/Component.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+ Struct Component
+
+
+
+
+
+
+
+
+
Struct Component
A component annotation is used for specifying which factory methods produce components in
+ an application context.
+
+
+
+
+ structComponent
+ ;
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/context/Prototype.html b/docs/poodinis/context/Prototype.html
new file mode 100644
index 0000000..a699043
--- /dev/null
+++ b/docs/poodinis/context/Prototype.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+ Struct Prototype
+
+
+
+
+
+
+
+
+
Struct Prototype
Components with the prototype registration will be scoped as dependencies which will create
+ new instances every time they are resolved. The factory method will be called repeatedly.
+
+
+
+
+ structPrototype
+ ;
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/context/RegisterByType.html b/docs/poodinis/context/RegisterByType.html
new file mode 100644
index 0000000..5bea0a7
--- /dev/null
+++ b/docs/poodinis/context/RegisterByType.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+ Struct RegisterByType
+
+
+
+
+
+
+
+
+
Struct RegisterByType
This annotation allows you to specify by which super type the component should be registered. This
+ enables you to use type-qualified alternatives for dependencies.
+
+
+
+
+ structRegisterByType(Type)
+ ;
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/context/registerContext.html b/docs/poodinis/context/registerContext.html
new file mode 100644
index 0000000..6021bdc
--- /dev/null
+++ b/docs/poodinis/context/registerContext.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Function registerContext
+
+
+
+
+
+
+
+
+
Function registerContext
Register dependencies through an application context.
+
An application context allows you to fine-tune dependency set-up and instantiation.
+ It is mostly used for dependencies which come from an external library or when you don't
+ want to use annotations to set-up dependencies in your classes.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/factory.html b/docs/poodinis/factory.html
new file mode 100644
index 0000000..1da85e9
--- /dev/null
+++ b/docs/poodinis/factory.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Module poodinis.factory
+
+
+
+
+
+
+
+
+
Module poodinis.factory
This module contains instance factory facilities
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/polyfill.html b/docs/poodinis/polyfill.html
new file mode 100644
index 0000000..266a8ec
--- /dev/null
+++ b/docs/poodinis/polyfill.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Module poodinis.polyfill
+
+
+
+
+
+
+
+
+
Module poodinis.polyfill
Forward-compatibility module for providing support for Phobos functionality
+ not available in older versions of Phobos.
+
Should not implement functionalitiy which is gone from the latest Phobos.
+
+
+
Implementations copied/re-implemented from std.exception and std.traits;
+
+
+
The baseline compatibility is D/Phobos 2.068.2
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/registration.html b/docs/poodinis/registration.html
new file mode 100644
index 0000000..9bc8214
--- /dev/null
+++ b/docs/poodinis/registration.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+ Module poodinis.registration
+
+
+
+
+
+
+
+
+
Module poodinis.registration
This module contains objects for defining and scoping dependency registrations.
+
Part of the Poodinis Dependency Injection framework.
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/valueinjection/ValueInjector.get.html b/docs/poodinis/valueinjection/ValueInjector.get.html
new file mode 100644
index 0000000..dba5865
--- /dev/null
+++ b/docs/poodinis/valueinjection/ValueInjector.get.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Function ValueInjector.get
+
+
+
+
+
+
+
+
+
Function ValueInjector.get
Get a value from the injector by key.
+
+
+
+
+ Typeget
+ (
+
+ stringkey
+
+ );
+
+
+
+
The key can have any format. Generally you are encouraged
+ to accept a dot separated path, for example: server.http.port
+
+
+
+
Throws
+
ValueNotAvailableException when the value for the given key is not available for any reason
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/valueinjection/ValueInjector.html b/docs/poodinis/valueinjection/ValueInjector.html
new file mode 100644
index 0000000..cecd4f5
--- /dev/null
+++ b/docs/poodinis/valueinjection/ValueInjector.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+ Interface ValueInjector
+
+
+
+
+
+
+
+
+
Interface ValueInjector
Interface which should be implemented by value injectors.
+
+
+
+
+ interfaceValueInjector(Type)
+ ;
+
+
+
+
Each value injector injects one specific type. The type can be any primitive
+ type or that of a struct. While class types are also supported, value injectors
+ are not intended for them.
+
+
+
Note that value injectors are also autowired before being used. Values within dependencies of
+ a value injector are not injected. Neither are values within the value injector itself.
+
+
+
Value injection is not supported for constructor injection.
+
class MyIntInjector : ValueInjector!int {
+ public override int get(string key) { ... }
+}
+
+// In order to make the container use your injector, register it by interface:
+container.register!(ValueInjector!int, MyIntInjector);
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/poodinis/valueinjection/ValueNotAvailableException.html b/docs/poodinis/valueinjection/ValueNotAvailableException.html
new file mode 100644
index 0000000..3790d78
--- /dev/null
+++ b/docs/poodinis/valueinjection/ValueNotAvailableException.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+ Class ValueNotAvailableException
+
+
+
+
+
+
+
+
+
Class ValueNotAvailableException
Thrown by injectors when the value with the given key cannot be found.
+