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.field.factory;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.registry.RegistrationException;
38 import info.magnolia.ui.form.field.definition.FieldDefinition;
39 import info.magnolia.ui.form.fieldtype.definition.FieldTypeDefinition;
40 import info.magnolia.ui.form.fieldtype.registry.FieldTypeDefinitionRegistry;
41 import info.magnolia.ui.form.validator.registry.FieldValidatorFactoryFactory;
42
43 import java.io.Serializable;
44
45 import javax.inject.Inject;
46
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50
51
52
53
54
55
56
57
58 @Deprecated
59 public class FieldFactoryFactory implements Serializable {
60
61 private static final Logger log = LoggerFactory.getLogger(FieldFactoryFactory.class);
62
63 private final ComponentProvider componentProvider;
64 private final FieldTypeDefinitionRegistry fieldTypeDefinitionRegistry;
65 private final FieldValidatorFactoryFactory fieldValidatorFactoryFactory;
66
67 @Inject
68 public FieldFactoryFactory(ComponentProvider componentProvider, FieldTypeDefinitionRegistry fieldTypeDefinitionRegistry, FieldValidatorFactoryFactory fieldValidatorFactoryFactory) {
69 this.componentProvider = componentProvider;
70 this.fieldTypeDefinitionRegistry = fieldTypeDefinitionRegistry;
71 this.fieldValidatorFactoryFactory = fieldValidatorFactoryFactory;
72 }
73
74
75
76
77
78
79
80
81
82 public FieldFactory createFieldFactory(FieldDefinition definition, Object... parameters) {
83
84 FieldTypeDefinition fieldTypeDefinition;
85 try {
86 fieldTypeDefinition = fieldTypeDefinitionRegistry.getByDefinition(definition.getClass());
87 if (fieldTypeDefinition == null) {
88 return null;
89 }
90 } catch (RegistrationException e) {
91 log.error("No field type definition found for " + definition.getName(), e);
92 return null;
93 }
94
95 Class<? extends FieldFactory> factoryClass = fieldTypeDefinition.getFactoryClass();
96 if (factoryClass == null) {
97 log.warn("No factory class set for definition class [{}]. Please check your configuration.", definition.getClass().getName());
98 return null;
99 }
100
101 Object[] combinedParameters = new Object[parameters.length + 1];
102 combinedParameters[0] = definition;
103 System.arraycopy(parameters, 0, combinedParameters, 1, parameters.length);
104
105 FieldFactory fieldFactory = componentProvider.newInstance(factoryClass, combinedParameters);
106 fieldFactory.setFieldValidatorFactoryFactory(fieldValidatorFactoryFactory);
107
108 return fieldFactory;
109 }
110 }