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.form.validator.registry;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.objectfactory.MgnlInstantiationException;
38 import info.magnolia.ui.form.validator.definition.FieldValidatorDefinition;
39 import info.magnolia.ui.form.validator.factory.FieldValidatorFactory;
40
41 import java.io.Serializable;
42
43 import javax.inject.Inject;
44
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48
49
50
51
52
53 public class FieldValidatorFactoryFactory implements Serializable {
54
55 private static final Logger log = LoggerFactory.getLogger(FieldValidatorFactoryFactory.class);
56
57 protected ComponentProvider componentProvider;
58
59 @Inject
60 public FieldValidatorFactoryFactory(ComponentProvider componentProvider) {
61 this.componentProvider = componentProvider;
62 }
63
64 public FieldValidatorFactory createFieldValidatorFactory(FieldValidatorDefinition definition, Object... args) {
65
66 Class<? extends info.magnolia.ui.form.validator.factory.FieldValidatorFactory> factoryClass = definition.getFactoryClass();
67 if (factoryClass == null) {
68 log.error("No factory class set for validator: " + definition.getClass().getName());
69 return null;
70 }
71
72 Object[] combinedParameters = new Object[args.length + 1];
73 combinedParameters[0] = definition;
74 System.arraycopy(args, 0, combinedParameters, 1, args.length);
75
76 try {
77 return componentProvider.newInstance(factoryClass, combinedParameters);
78 } catch (MgnlInstantiationException e) {
79 log.error("Could not instantiate validator factory class for validator: " + definition.getClass().getName(), e);
80 return null;
81 }
82 }
83 }