ObjectResolverRegistry.java

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

Mutations

37

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

2.2
Location : resolve
Killed by : pro.verron.officestamper.test.CustomFunctionTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.CustomFunctionTests]/[test-template:trifunctions(pro.verron.officestamper.test.utils.ContextFactory, java.lang.String, java.lang.String)]/[test-template-invocation:#12]
negated conditional → KILLED

Active mutators

Tests examined


Report generated by PIT 1.25.5 support