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
/// @version ${version}
16
/// @since 1.6.7
17
public final class ObjectResolverRegistry {
18
    private final List<ObjectResolver> resolvers = new ArrayList<>();
19
20
    /// A registry for object resolvers.
21
    ///
22
    /// It allows registering and resolving object resolvers based on certain criteria.
23
    ///
24
    /// @param resolvers the ordered list of object resolvers to be registered in 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 part       the document part in which to resolve the placeholder.
32
    /// @param expression the expression to resolve.
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 Insert resolve(DocxPart part, String expression, @Nullable Object object) {
37
        for (ObjectResolver resolver : resolvers)
38 2 1. resolve : replaced return value with null for pro/verron/officestamper/core/ObjectResolverRegistry::resolve → TIMED_OUT
2. resolve : negated conditional → TIMED_OUT
            if (resolver.canResolve(object)) return resolver.resolve(part, expression, object);
39
        throw new OfficeStamperException("No resolver for %s".formatted(object));
40
    }
41
}

Mutations

38

1.1
Location : resolve
Killed by : none
replaced return value with null for pro/verron/officestamper/core/ObjectResolverRegistry::resolve → TIMED_OUT

2.2
Location : resolve
Killed by : none
negated conditional → TIMED_OUT

Active mutators

Tests examined


Report generated by PIT 1.22.0