@@ -9,40 +9,84 @@ import (
9
9
10
10
type Dependency struct {
11
11
container * dig.Container
12
- param * param.Dependency
12
+ params * param.Dependency
13
13
constructor * verifier.Constructor
14
14
}
15
15
16
16
func NewDependency (container * dig.Container , params * param.Dependency , constructor * verifier.Constructor ) * Dependency {
17
17
return & Dependency {
18
18
container : container ,
19
19
constructor : constructor ,
20
- param : params ,
20
+ params : params ,
21
21
}
22
22
}
23
23
24
- func (d * Dependency ) Put ( constructor runtime. Constructor ) (err error ) {
25
- if ve := d .constructor . Verify ( constructor ); nil != ve {
26
- err = ve
27
- } else if pe := d .container . Provide ( constructor ); nil != pe {
28
- err = pe
24
+ func (d * Dependency ) Inject ( ) (err error ) {
25
+ if de := d .puts ( ); nil != de {
26
+ err = de
27
+ } else if ge := d .gets ( ); nil != ge {
28
+ err = ge
29
29
}
30
30
31
31
return
32
32
}
33
33
34
- func (d * Dependency ) Provide ( constructor runtime. Constructor ) {
35
- if err := d .Put ( constructor ); nil != err {
34
+ func (d * Dependency ) Apply ( ) {
35
+ if err := d .Inject ( ); nil != err {
36
36
panic (err )
37
37
}
38
38
}
39
39
40
- func (d * Dependency ) Get (getter runtime.Getter ) error {
41
- return d .container .Invoke (getter )
40
+ func (d * Dependency ) gets () (err error ) {
41
+ for _ , get := range d .params .Gets {
42
+ err = d .invoke (get )
43
+ if nil != err {
44
+ break
45
+ }
46
+ }
47
+
48
+ return
42
49
}
43
50
44
- func (d * Dependency ) Invoke (getter runtime.Getter ) {
45
- if err := d .Get (getter ); nil != err {
46
- panic (err )
51
+ func (d * Dependency ) invoke (get * param.Get ) (err error ) {
52
+ for _ , getter := range get .Getters {
53
+ err = d .container .Invoke (getter )
54
+ if nil != err {
55
+ break
56
+ }
47
57
}
58
+
59
+ return
60
+ }
61
+
62
+ func (d * Dependency ) puts () (err error ) {
63
+ for _ , put := range d .params .Puts {
64
+ err = d .put (put )
65
+ if nil != err {
66
+ break
67
+ }
68
+ }
69
+
70
+ return
71
+ }
72
+
73
+ func (d * Dependency ) put (put * param.Put ) (err error ) {
74
+ for _ , constructor := range put .Constructors {
75
+ err = d .provide (constructor )
76
+ if nil != err {
77
+ break
78
+ }
79
+ }
80
+
81
+ return
82
+ }
83
+
84
+ func (d * Dependency ) provide (constructor runtime.Constructor ) (err error ) {
85
+ if ve := d .constructor .Verify (constructor ); nil != ve {
86
+ err = ve
87
+ } else if pe := d .container .Provide (constructor ); nil != pe {
88
+ err = pe
89
+ }
90
+
91
+ return
48
92
}
0 commit comments