]> git.somenet.org - pub/jan/dst18.git/blob - ass2-di/src/main/java/dst/ass2/di/InjectionControllerFactory.java
[2.2.2] Transparent DI works.
[pub/jan/dst18.git] / ass2-di / src / main / java / dst / ass2 / di / InjectionControllerFactory.java
1 package dst.ass2.di;
2
3 import dst.ass2.di.impl.InjectionControllerImpl;
4
5 /**
6  * Creates and provides {@link IInjectionController} instances.
7  */
8 public class InjectionControllerFactory {
9     private static IInjectionController standalone = null;
10     private static IInjectionController transparent = null;
11
12     /**
13      * Returns the singleton {@link IInjectionController} instance.<br/>
14      * If none is available, a new one is created.
15      *
16      * @return the instance
17      */
18     public static synchronized IInjectionController getStandAloneInstance() {
19         if (standalone == null) {
20             standalone = getNewStandaloneInstance();
21         }
22         return standalone;
23     }
24
25     /**
26      * Returns the singleton {@link IInjectionController} instance for processing objects modified by an
27      * {@link dst.ass2.di.agent.InjectorAgent InjectorAgent}.<br/>
28      * If none is available, a new one is created.
29      *
30      * @return the instance
31      */
32     public static synchronized IInjectionController getTransparentInstance() {
33         if (transparent == null) {
34             transparent = getNewTransparentInstance();
35         }
36         return transparent;
37     }
38
39     /**
40      * Creates and returns a new {@link IInjectionController} instance.
41      *
42      * @return the newly created instance
43      */
44     public static IInjectionController getNewStandaloneInstance() {
45         return new InjectionControllerImpl(false);
46     }
47
48     /**
49      * Creates and returns a new {@link IInjectionController} instance for processing objects modified by an
50      * {@link dst.ass2.di.agent.InjectorAgent InjectorAgent}.<br/>
51      *
52      * @return the instance
53      */
54     public static IInjectionController getNewTransparentInstance() {
55         return new InjectionControllerImpl(true);
56     }
57 }