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.rendering.template.registry;
35
36 import info.magnolia.config.registry.AbstractRegistry;
37 import info.magnolia.config.registry.DefinitionMetadataBuilder;
38 import info.magnolia.config.registry.DefinitionProvider;
39 import info.magnolia.config.registry.DefinitionProviderBuilder;
40 import info.magnolia.config.registry.DefinitionProviderWrapper;
41 import info.magnolia.config.registry.DefinitionRawView;
42 import info.magnolia.config.registry.DefinitionType;
43 import info.magnolia.module.ModuleRegistry;
44 import info.magnolia.objectfactory.Components;
45 import info.magnolia.registry.RegistrationException;
46 import info.magnolia.rendering.DefinitionTypes;
47 import info.magnolia.rendering.template.TemplateDefinition;
48 import info.magnolia.rendering.template.registry.validator.TemplateDefinitionValidator;
49
50 import java.util.Collection;
51
52 import javax.inject.Inject;
53 import javax.inject.Singleton;
54
55
56
57
58
59 @Singleton
60 public class TemplateDefinitionRegistry extends AbstractRegistry<TemplateDefinition> {
61
62 @Inject
63 public TemplateDefinitionRegistry(final ModuleRegistry moduleRegistry, TemplateDefinitionValidator templateDefinitionValidator) {
64 super(moduleRegistry);
65 addValidator(templateDefinitionValidator);
66 }
67
68
69
70
71 @Deprecated
72 public TemplateDefinitionRegistry(final ModuleRegistry moduleRegistry) {
73 this(moduleRegistry, Components.getComponent(TemplateDefinitionValidator.class));
74 }
75
76
77
78
79 @Deprecated
80 public TemplateDefinitionRegistry() {
81 this(Components.getComponent(ModuleRegistry.class));
82 }
83
84 @Override
85 public DefinitionType type() {
86 return DefinitionTypes.TEMPLATE;
87 }
88
89 @Override
90 public DefinitionMetadataBuilder newMetadataBuilder() {
91 return DefinitionMetadataBuilder.usingModuleAndRelativePathAsId();
92 }
93
94
95
96
97
98
99 @Deprecated
100 public void register(TemplateDefinitionProvider provider) {
101 try {
102
103
104
105 final String[] idParts = provider.getId().split(":", 2);
106 final String module = idParts[0];
107
108 final TemplateDefinition td = provider.getTemplateDefinition();
109 final String relativeLocation = idParts[1];
110 final DefinitionProvider<TemplateDefinition> dp = DefinitionProviderBuilder.<TemplateDefinition>newBuilder()
111 .metadata(newMetadataBuilder().type(type()).name(td.getName()).module(module).relativeLocation(relativeLocation))
112 .rawView(DefinitionRawView.EMPTY)
113 .definition(td)
114 .build();
115 register(dp);
116 } catch (RegistrationException e) {
117 throw new RuntimeException(e);
118 }
119 }
120
121
122
123
124 @Deprecated
125 public TemplateDefinition getTemplateDefinition(String id) throws RegistrationException {
126 try {
127 final DefinitionProvider<TemplateDefinition> templateDefinitionProvider = getProvider(id);
128 return templateDefinitionProvider.get();
129 } catch (IllegalArgumentException | NoSuchDefinitionException | InvalidDefinitionException e) {
130 throw new RegistrationException(e.getMessage(), e);
131 }
132 }
133
134 @Override
135 protected DefinitionProvider<TemplateDefinition> onRegister(final DefinitionProvider<TemplateDefinition> provider) {
136
137
138
139 final DefinitionProvider<TemplateDefinition> wrappedProvider = super.onRegister(provider);
140 return new DefinitionProviderWrapper<TemplateDefinition>(wrappedProvider) {
141 @Override
142 public TemplateDefinition get() {
143 final TemplateDefinition td = super.get();
144 final String referenceString = wrappedProvider.getMetadata().getReferenceId();
145 td.setId(referenceString);
146 return td;
147 }
148 };
149 }
150
151
152
153
154
155
156 @Deprecated
157 public Collection<TemplateDefinition> getTemplateDefinitions() {
158 return getAllDefinitions();
159 }
160
161 }