MentaContainer

Rev

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

Rev 94 Rev 96
Line 30... Line 30...
30
            private List<Class<? extends Object>> initTypes = null;
30
            private List<Class<? extends Object>> initTypes = null;
31
           
31
           
32
            private Constructor<? extends Object> constructor = null;
32
            private Constructor<? extends Object> constructor = null;
33
           
33
           
34
            private Map<String, Method> cache = null;
34
            private Map<String, Method> cache = null;
-
 
35
           
-
 
36
            private boolean useZeroArgumentConstructor = false;
35
           
37
           
36
            public ClassFactory(Container container, Class<? extends Object> klass) {
38
            public ClassFactory(Container container, Class<? extends Object> klass) {
37
               
39
               
38
                this.container = container;
40
                this.container = container;
39
               
41
               
Line 51... Line 53...
51
                }
53
                }
52
               
54
               
53
                props.put(name, value);
55
                props.put(name, value);
54
               
56
               
55
                return this;
57
                return this;
-
 
58
            }
-
 
59
           
-
 
60
            @Override
-
 
61
            public ConfigurableFactory useZeroArgumentConstructor() {
-
 
62
               
-
 
63
                this.useZeroArgumentConstructor = true;
-
 
64
               
-
 
65
                return this;
56
            }
66
            }
57
           
67
           
58
            @Override
68
            @Override
59
            public ConfigurableFactory addPropertyDependency(String property, String key) {
69
            public ConfigurableFactory addPropertyDependency(String property, String key) {
60
               
70
               
Line 320... Line 330...
320
                }
330
                }
321
               
331
               
322
                return (T) obj;
332
                return (T) obj;
323
            }
333
            }
324
           
334
           
325
            /*
-
 
326
            private Constructor<? extends Object> findConstructor() {
-
 
-
 
335
            private Constructor<? extends Object> findConstructor(List<Object> valuesToBeUsed) {
327
               
336
               
328
                LinkedList<Class<? extends Object>> copy = new LinkedList<Class<? extends Object>>(initTypes);
-
 
-
 
337
                LinkedList<Class<? extends Object>> providedInitTypes = new LinkedList<Class<? extends Object>>(initTypes);
-
 
338
               
-
 
339
                LinkedList<Object> providedInitValues = new LinkedList<Object>(initValues);
329
               
340
               
330
                Constructor<? extends Object>[] constructors = klass.getConstructors();
341
                Constructor<? extends Object>[] constructors = klass.getConstructors();
331
               
342
               
332
                Constructor<? extends Object> found = null;
343
                Constructor<? extends Object> found = null;
333
               
344
               
334
                for(Constructor<? extends Object> c : constructors) {
345
                for(Constructor<? extends Object> c : constructors) {
335
                       
346
                       
336
                        Class<? extends Object>[] params = c.getParameterTypes();
-
 
-
 
347
                        Class<? extends Object>[] constructorParams = c.getParameterTypes();
337
                       
348
                       
338
                        if (params == null || params.length == 0) continue; // skip default constructor for now...
-
 
-
 
349
                        if (constructorParams == null || constructorParams.length == 0) continue; // skip default constructor for now...
339
                       
350
                       
340
                        for(Class<? extends Object> p : params) {
-
 
-
 
351
                        for(Class<? extends Object> constructorParam : constructorParams) {
341
                               
352
                               
342
                                // first see if it was given...
-
 
-
 
353
                                // first see if it was provided...
343
                               
354
                               
344
                                Class<? extends Object> given = copy.isEmpty() ? null : copy.get(0);
-
 
-
 
355
                                Class<? extends Object> provided = providedInitTypes.isEmpty() ? null : providedInitTypes.get(0);
345
                               
356
                               
346
                                if (p.equals(given)) {
-
 
-
 
357
                                if (provided != null && constructorParam.isAssignableFrom(provided)) {
-
 
358
                                       
-
 
359
                                        providedInitTypes.removeFirst(); // we matched this one, so removed...
347
                                       
360
                                       
348
                                        continue; // found param, let's check the other one...
361
                                        continue; // found param, let's check the other one...
349
                                       
362
                                       
350
                                } else {
363
                                } else {
351
                                       
364
                                       
352
                                        // check auto-wiring...
365
                                        // check auto-wiring...
353
                                }
366
                                }
354
                        }
367
                        }
355
                }
368
                }
-
 
369
               
-
 
370
                return null;
356
            }
371
            }
357
            */
-
 
358
           
372
           
359
            private static class DependencyKey {
373
            private static class DependencyKey {
360
               
374
               
361
                private String key;
375
                private String key;
362
               
376