MentaContainer

Rev

Rev 5 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 20
Line 2... Line 2...
2
2
3
import java.lang.reflect.Method;
3
import java.lang.reflect.Method;
4
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.Map;
5
import java.util.Map;
6
6
-
 
7
import org.mentacontainer.Dependency;
7
import org.mentacontainer.util.InjectionUtils;
8
import org.mentacontainer.util.InjectionUtils;
8
9
9
public class Dependency {
-
 
-
 
10
/**
-
 
11
 * A simple implementation of the Dependency interface.
-
 
12
 *
-
 
13
 * @author sergio.oliveira.jr@gmail.com
-
 
14
 */
-
 
15
public class MentaDependency implements Dependency {
10
       
16
       
11
        private final String target;
17
        private final String target;
12
       
18
       
13
        private String source;
19
        private String source;
14
       
20
       
15
        private final Class<? extends Object> klass;
21
        private final Class<? extends Object> klass;
16
       
22
       
17
        private Map<String, Method> cache = new HashMap<String, Method>();
23
        private Map<String, Method> cache = new HashMap<String, Method>();
18
       
24
       
19
        public Dependency(String target, Class<? extends Object> klass, String source) {
-
 
-
 
25
        public MentaDependency(String target, Class<? extends Object> klass, String source) {
20
               
26
               
21
                this.klass = klass;
27
                this.klass = klass;
22
               
28
               
23
                this.target = target;
29
                this.target = target;
24
               
30
               
25
                this.source = source;
31
                this.source = source;
26
        }
32
        }
27
       
33
       
28
        public Dependency(String target, Class<? extends Object> klass) {
-
 
-
 
34
        public MentaDependency(String target, Class<? extends Object> klass) {
29
               
35
               
30
                this(target, klass, target);
36
                this(target, klass, target);
31
        }
37
        }
32
       
38
       
33
        public String getTarget() {
39
        public String getTarget() {
Line 38... Line 44...
38
        public String getSource() {
44
        public String getSource() {
39
               
45
               
40
                return source;
46
                return source;
41
        }
47
        }
42
       
48
       
43
        public Class<? extends Object> getDependencyClass() {
-
 
-
 
49
        public Class<? extends Object> getType() {
44
               
50
               
45
                return klass;
51
                return klass;
46
        }
52
        }
47
       
53
       
48
        public int hashCode() {
54
        public int hashCode() {
Line 50... Line 56...
50
                return klass.hashCode() * 62 + target.hashCode() * 31 + source.hashCode();
56
                return klass.hashCode() * 62 + target.hashCode() * 31 + source.hashCode();
51
        }
57
        }
52
       
58
       
53
        public boolean equals(Object obj) {
59
        public boolean equals(Object obj) {
54
               
60
               
55
                if (!(obj instanceof Dependency)) return false;
-
 
-
 
61
                if (!(obj instanceof MentaDependency)) return false;
56
               
62
               
57
                Dependency d = (Dependency) obj;
-
 
-
 
63
                MentaDependency d = (MentaDependency) obj;
-
 
64
               
-
 
65
                if (!d.target.equals(this.target)) return false;
58
               
66
               
59
                if (!d.klass.equals(this.klass)) return false;
67
                if (!d.klass.equals(this.klass)) return false;
60
68
61
                return true;
69
                return true;
62
        }
70
        }
63
       
71
       
64
    public Method getMethod(Class<? extends Object> targetClass) {
-
 
-
 
72
    public Method check(Class<? extends Object> targetClass) {
65
73
66
        String className = targetClass.getName();
74
        String className = targetClass.getName();
67
75
68
        // first check cache...
76
        // first check cache...
69
       
77