1 | package pro.verron.officestamper.core; | |
2 | ||
3 | import org.docx4j.wml.R; | |
4 | import org.springframework.lang.Nullable; | |
5 | import pro.verron.officestamper.api.DocxPart; | |
6 | import pro.verron.officestamper.api.ObjectResolver; | |
7 | import pro.verron.officestamper.api.OfficeStamperException; | |
8 | import pro.verron.officestamper.api.Placeholder; | |
9 | ||
10 | import java.util.ArrayList; | |
11 | import java.util.List; | |
12 | ||
13 | /// A registry for object resolvers. It allows registering and resolving object resolvers based on certain criteria. | |
14 | /// | |
15 | /// @author Joseph Verron | |
16 | /// @version ${version} | |
17 | /// @since 1.6.7 | |
18 | public final class ObjectResolverRegistry { | |
19 | private final List<ObjectResolver> resolvers = new ArrayList<>(); | |
20 | ||
21 | /// A registry for object resolvers. It allows registering and resolving object resolvers based on certain criteria. | |
22 | /// | |
23 | /// @param resolvers the ordered list of object resolvers to be registered in | |
24 | /// the registry | |
25 | public ObjectResolverRegistry(List<ObjectResolver> resolvers) { | |
26 | this.resolvers.addAll(resolvers); | |
27 | } | |
28 | ||
29 | /// Resolves the expression in the given document with the provided object. | |
30 | /// | |
31 | /// @param document the WordprocessingMLPackage document in which to resolve the placeholder | |
32 | /// @param placeholder the expression value to be replaced | |
33 | /// @param object the object to be used for resolving the expression | |
34 | /// @return the resolved value for the expression | |
35 | /// @throws OfficeStamperException if no resolver is found for the object | |
36 | public R resolve( | |
37 | DocxPart document, | |
38 | Placeholder placeholder, | |
39 | @Nullable Object object | |
40 | ) { | |
41 | for (ObjectResolver resolver : resolvers) | |
42 |
1
1. resolve : negated conditional → KILLED |
if (resolver.canResolve(object)) |
43 |
1
1. resolve : replaced return value with null for pro/verron/officestamper/core/ObjectResolverRegistry::resolve → KILLED |
return resolver.resolve(document, placeholder, object); |
44 | throw new OfficeStamperException("No resolver for %s".formatted(object)); | |
45 | } | |
46 | } | |
Mutations | ||
42 |
1.1 |
|
43 |
1.1 |