MentaContainer

Rev

Rev 141 | Rev 143 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 141 Rev 142
Line 1... Line 1...
1
package org.mentacontainer.impl;
1
package org.mentacontainer.impl;
2
2
3
import java.lang.reflect.Method;
3
import java.lang.reflect.Method;
4
4
5
import org.mentacontainer.Creator;
5
import org.mentacontainer.Creator;
6
import org.mentacontainer.Interceptor;
-
 
7
import org.mentacontainer.util.FindMethod;
6
import org.mentacontainer.util.FindMethod;
8
7
9
public class GenericFactory<E> implements Creator<E>, Interceptor<E> {
-
 
-
 
8
public class GenericFactory<E> implements Creator<E> {
10
       
9
       
11
        private final Object factory;
10
        private final Object factory;
12
       
11
       
13
        private final Method method;
12
        private final Method method;
14
       
13
       
15
        private final Class<E> type;
14
        private final Class<E> type;
16
       
-
 
17
        private Interceptor<E> interceptor = null;
-
 
18
       
15
       
19
        public GenericFactory(Object factory, String methodName) {
16
        public GenericFactory(Object factory, String methodName) {
20
               
17
               
21
                this.factory = factory;
18
                this.factory = factory;
22
               
19
               
Line 29... Line 26...
29
                        this.type = (Class<E>) method.getReturnType();
26
                        this.type = (Class<E>) method.getReturnType();
30
                       
27
                       
31
                } catch(Exception e) {
28
                } catch(Exception e) {
32
                       
29
                       
33
                        throw new RuntimeException(e);
30
                        throw new RuntimeException(e);
34
                }
-
 
35
        }
-
 
36
       
-
 
37
        public void setInterceptor(Interceptor<E> interceptor) {
-
 
38
               
-
 
39
                this.interceptor = interceptor;
-
 
40
        }
-
 
41
       
-
 
42
        @Override
-
 
43
        public void onCreated(E createdObject) {
-
 
44
                if (interceptor != null) {
-
 
45
                        interceptor.onCreated(createdObject);
-
 
46
                }
-
 
47
        }
-
 
48
       
-
 
49
        @Override
-
 
50
        public void onCleared(E clearedObject) {
-
 
51
                if (interceptor != null) {
-
 
52
                        interceptor.onCleared(clearedObject);
-
 
53
                }
31
                }
54
        }
32
        }
55
       
33
       
56
        @Override
34
        @Override
57
        public E createInstance()  {
35
        public E createInstance()  {