| 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 2.2 |