@@ -71,44 +71,63 @@ private enum Hk2InjectionManagerStrategy {
71
71
/**
72
72
* @see ImmediateHk2InjectionManager
73
73
*/
74
- IMMEDIATE ,
74
+ IMMEDIATE {
75
+ @ Override
76
+ InjectionManager createInjectionManager () {
77
+ return new ImmediateHk2InjectionManager ();
78
+ }
79
+
80
+ @ Override
81
+ InjectionManager createInjectionManager (final Object parent ) {
82
+ return new ImmediateHk2InjectionManager (parent );
83
+ }
84
+
85
+ @ Override
86
+ InjectionManager createInjectionManager (final Binder binder ) {
87
+ return new ImmediateHk2InjectionManager (binder );
88
+ }
89
+ },
75
90
/**
76
91
* @see DelayedHk2InjectionManager
77
92
*/
78
- DELAYED
93
+ DELAYED {
94
+ @ Override
95
+ InjectionManager createInjectionManager () {
96
+ return new DelayedHk2InjectionManager ();
97
+ }
98
+
99
+ @ Override
100
+ InjectionManager createInjectionManager (final Object parent ) {
101
+ return new DelayedHk2InjectionManager (parent );
102
+ }
103
+
104
+ @ Override
105
+ InjectionManager createInjectionManager (final Binder binder ) {
106
+ return new DelayedHk2InjectionManager (binder );
107
+ }
108
+ };
109
+
110
+ abstract InjectionManager createInjectionManager ();
111
+
112
+ abstract InjectionManager createInjectionManager (Object parent );
113
+
114
+ abstract InjectionManager createInjectionManager (Binder binder );
79
115
}
80
116
81
117
@ Override
82
118
public InjectionManager create () {
83
- switch (getStrategy ()) {
84
- case DELAYED :
85
- return initInjectionManager (new DelayedHk2InjectionManager ());
86
- default :
87
- return initInjectionManager (new ImmediateHk2InjectionManager ());
88
-
89
- }
119
+ return initInjectionManager (getStrategy ().createInjectionManager ());
90
120
}
91
121
92
122
@ Override
93
123
public InjectionManager create (Object parent ) {
94
- switch (getStrategy ()) {
95
- case DELAYED :
96
- return initInjectionManager (new DelayedHk2InjectionManager (parent ));
97
- default :
98
- return initInjectionManager (new ImmediateHk2InjectionManager (parent ));
99
-
100
- }
124
+ return initInjectionManager (getStrategy ().createInjectionManager (parent ));
101
125
}
102
126
103
127
// TODO: CANDIDATE TO DELETE: is used in RuntimeDelegateImpl super(...).
104
128
@ Override
105
129
public InjectionManager create (Binder binder ) {
106
- switch (getStrategy ()) {
107
- case DELAYED :
108
- return initInjectionManager (new DelayedHk2InjectionManager (binder ));
109
- default :
110
- return initInjectionManager (new ImmediateHk2InjectionManager (binder ));
111
- }
130
+ return initInjectionManager (getStrategy ().createInjectionManager (binder ));
112
131
}
113
132
114
133
private Hk2InjectionManagerStrategy getStrategy () {
0 commit comments