ObjectResolverRegistry.java

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
Location : resolve
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

43

1.1
Location : resolve
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#12]
replaced return value with null for pro/verron/officestamper/core/ObjectResolverRegistry::resolve → KILLED

Active mutators

Tests examined


Report generated by PIT 1.21.0