1 package net.sourceforge.jparam.conversion.converters;
2
3 import net.sourceforge.jparam.conversion.creators.ICreator;
4 import net.sourceforge.jparam.conversion.weights.ScalarConversionWeight;
5
6
7
8
9 public class CreatorConverter extends AbstractConverter {
10 ICreator conversionCreator;
11
12 /***
13 * @param conversionConstructor
14 */
15 public CreatorConverter(ICreator conversionCreator) {
16 super();
17 this.conversionCreator = conversionCreator;
18
19 if (conversionCreator.getParameterTypes().length != 1) {
20 throw new RuntimeException(
21 "Creator must have exactly one argument: "
22 + conversionCreator);
23 }
24
25 sourceClass = conversionCreator.getParameterTypes()[0];
26 targetClass = conversionCreator.getReturnClass();
27
28 conversionWeight = ScalarConversionWeight.CONV_USER;
29 }
30
31 public Object internalConvert(Object o) throws Exception {
32 return conversionCreator.create(new Object[] { o });
33 }
34
35 protected boolean converterEquals(IConverter o) {
36 CreatorConverter other = (CreatorConverter) o;
37 return conversionCreator.equals(other.conversionCreator);
38 }
39
40 public IConverter update(IConverter updatedConverter) {
41
42 if (updatedConverter == null){
43 }
44
45 return this;
46 }
47 }