1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.framework.databinding.validator;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.objectfactory.MgnlInstantiationException;
38
39 import java.io.Serializable;
40
41 import javax.inject.Inject;
42
43 import org.slf4j.Logger;
44 import org.slf4j.LoggerFactory;
45
46
47
48
49
50
51 public class FieldValidatorFactoryFactory implements Serializable {
52
53 private static final Logger log = LoggerFactory.getLogger(FieldValidatorFactoryFactory.class);
54
55 protected ComponentProvider componentProvider;
56
57 @Inject
58 public FieldValidatorFactoryFactory(ComponentProvider componentProvider) {
59 this.componentProvider = componentProvider;
60 }
61
62 public FieldValidatorFactory createFieldValidatorFactory(FieldValidatorDefinition definition, Object... args) {
63
64 Class<? extends FieldValidatorFactory> factoryClass = definition.getFactoryClass();
65 if (factoryClass == null) {
66 log.error("No factory class set for validator: " + definition.getClass().getName());
67 return null;
68 }
69
70 Object[] combinedParameters = new Object[args.length + 1];
71 combinedParameters[0] = definition;
72 System.arraycopy(args, 0, combinedParameters, 1, args.length);
73
74 try {
75 return componentProvider.newInstance(factoryClass, combinedParameters);
76 } catch (MgnlInstantiationException e) {
77 log.error("Could not instantiate validator factory class for validator: " + definition.getClass().getName(), e);
78 return null;
79 }
80 }
81 }