MentaContainer

Rev

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

Rev 91 Rev 92
Line 89... Line 89...
89
               
89
               
90
                initTypes.add(type);
90
                initTypes.add(type);
91
               
91
               
92
                return this;
92
                return this;
93
            }
93
            }
94
-
 
95
           
94
           
96
            @Override
95
            @Override
97
            public ConfigurableFactory addInitValue(Object value) {
96
            public ConfigurableFactory addInitValue(Object value) {
98
               
97
               
99
                return addInitValue(value, value.getClass());
98
                return addInitValue(value, value.getClass());
100
            }
99
            }
101
           
100
           
102
            @Override
101
            @Override
103
            public ConfigurableFactory addInitValue(int x) {
-
 
-
 
102
            public ConfigurableFactory addInitPrimitive(Object value) {
104
               
103
               
105
                return addInitValue(x, int.class);
-
 
106
            }
-
 
107
           
-
 
108
            @Override
-
 
109
            public ConfigurableFactory addInitValue(boolean b) {
-
 
-
 
104
                Class<? extends Object> primitive = getPrimitiveFrom(value);
110
               
105
               
111
                return addInitValue(b, boolean.class);
-
 
112
            }
-
 
113
           
-
 
114
            @Override
-
 
115
            public ConfigurableFactory addInitValue(long l) {
-
 
-
 
106
                if (primitive == null) throw new IllegalArgumentException("Value is not a primitive: " + value);
116
               
107
               
117
                return addInitValue(l, long.class);
-
 
-
 
108
                return addInitValue(value, primitive);
118
            }
109
            }
119
           
110
           
120
            @Override
-
 
121
            public ConfigurableFactory addInitValue(double d) {
-
 
-
 
111
            private List<Class<? extends Object>> convertToPrimitives(List<Class<? extends Object>> list) {
122
               
112
               
123
                return addInitValue(d, double.class);
-
 
124
            }
-
 
125
-
 
126
            @Override
-
 
127
            public ConfigurableFactory addInitValue(float f) {
-
 
-
 
113
                Iterator<Class<? extends Object>> iter = list.iterator();
128
               
114
               
129
                return addInitValue(f, float.class);
-
 
130
            }
-
 
131
-
 
132
            @Override
-
 
133
            public ConfigurableFactory addInitValue(byte b) {
-
 
-
 
115
                List<Class<? extends Object>> results = new LinkedList<Class<? extends Object>>();
134
               
116
               
135
                return addInitValue(b, byte.class);
-
 
136
            }
-
 
137
-
 
138
            @Override
-
 
139
            public ConfigurableFactory addInitValue(short s) {
-
 
140
               
-
 
141
                return addInitValue(s, short.class);
-
 
142
            }
-
 
143
-
 
144
            @Override
-
 
145
            public ConfigurableFactory addInitValue(char c) {
-
 
-
 
117
                while(iter.hasNext()) {
-
 
118
                       
-
 
119
                        Class<? extends Object> klass = iter.next();
-
 
120
                       
-
 
121
                        Class<? extends Object> primitive = getPrimitiveFrom(klass);
-
 
122
                       
-
 
123
                        if (primitive != null) {
-
 
124
                               
-
 
125
                                results.add(primitive);
-
 
126
                               
-
 
127
                        } else {
-
 
128
                               
-
 
129
                                results.add(klass);
-
 
130
                        }
-
 
131
                }
146
               
132
               
147
                return addInitValue(c, char.class);
-
 
-
 
133
                return results;
148
            }
134
            }
149
           
135
           
150
            private Class<? extends Object>[] getClasses(List<Class<? extends Object>> values) {
136
            private Class<? extends Object>[] getClasses(List<Class<? extends Object>> values) {
151
               
137
               
152
                Class<? extends Object>[] types = (Class<? extends Object>[]) new Class[values.size()];
138
                Class<? extends Object>[] types = (Class<? extends Object>[]) new Class[values.size()];
Line 256... Line 242...
256
                else if (w instanceof Integer) { return Integer.TYPE; }
242
                else if (w instanceof Integer) { return Integer.TYPE; }
257
                else if (w instanceof Long) { return Long.TYPE; }
243
                else if (w instanceof Long) { return Long.TYPE; }
258
                else if (w instanceof Float) { return Float.TYPE; }
244
                else if (w instanceof Float) { return Float.TYPE; }
259
                else if (w instanceof Double) { return Double.TYPE; }
245
                else if (w instanceof Double) { return Double.TYPE; }
260
                return null;
246
                return null;
261
            }  
-
 
-
 
247
            }
-
 
248
           
-
 
249
            private static Class<? extends Object> getPrimitiveFrom(Class<? extends Object> klass) {
-
 
250
                if (klass.equals(Boolean.class)) { return Boolean.TYPE; }
-
 
251
                else if (klass.equals(Byte.class)) { return Byte.TYPE; }
-
 
252
                else if (klass.equals(Short.class)) { return Short.TYPE; }
-
 
253
                else if (klass.equals(Character.class)) { return Character.TYPE; }
-
 
254
                else if (klass.equals(Integer.class)) { return Integer.TYPE; }
-
 
255
                else if (klass.equals(Long.class)) { return Long.TYPE; }
-
 
256
                else if (klass.equals(Float.class)) { return Float.TYPE; }
-
 
257
                else if (klass.equals(Double.class)) { return Double.TYPE; }
-
 
258
                return null;
-
 
259
            }
262
           
260
           
263
            @Override
261
            @Override
264
            public <T> T getInstance()  {
262
            public <T> T getInstance()  {
265
               
263
               
266
                Object obj = null;
264
                Object obj = null;
Line 273... Line 271...
273
                               
271
                               
274
                            constructor = klass.getConstructor(getClasses(initTypes));
272
                            constructor = klass.getConstructor(getClasses(initTypes));
275
                           
273
                           
276
                        } catch(Exception e) {
274
                        } catch(Exception e) {
277
                               
275
                               
278
                            throw new RuntimeException("Cannot find a constructor for class: " + klass, e);
-
 
-
 
276
                                // try primitives...
-
 
277
                               
-
 
278
                                try {
-
 
279
                               
-
 
280
                                        constructor = klass.getConstructor(getClasses(convertToPrimitives(initTypes)));
-
 
281
                                       
-
 
282
                                } catch(Exception ee) {
-
 
283
-
 
284
                                        throw new RuntimeException("Cannot find a constructor for class: " + klass);
-
 
285
                                }
279
                        }
286
                        }
280
                    }
287
                    }
281
                   
288
                   
282
                    try {
289
                    try {
283
                       
290