Package io.microsphere.util
Class Configurer<T>
- java.lang.Object
-
- io.microsphere.util.Configurer<T>
-
- Type Parameters:
T- the type of the value being configured
public class Configurer<T> extends java.lang.ObjectA fluent configuration utility for applying conditional operations on a value of typeT.The
Configurerclass provides a builder-style API to configure and manipulate values, with support for comparison, predicate checks, type conversion, and application of consumer actions. It is designed to be non-thread-safe and intended for single-thread usage.Key Features
- Value initialization with static factory methods.
- Conditional comparison to detect changes in value.
- Predicate-based filtering to control flow based on the current value.
- Type conversion using functional interfaces.
- Consumer application to perform side effects on the final value.
- Detailed logging of each operation for traceability.
Example Usage
Basic Configuration Flow
Configurer.configure("timeout", 30) .compare(25) .on(value -> value > 0) .as(value -> value * 1000) .apply(value -> System.setProperty("timeout.ms", String.valueOf(value)));Chaining Multiple Operations
Configurer.configure(() -> System.getenv("DEBUG_MODE")) .on(mode -> "true".equalsIgnoreCase(mode)) .as(Boolean::valueOf) .apply(enabled -> logger.info("Debug mode is enabled: {}", enabled));Discarding or Filtering Values
Configurer.configure("username", () -> System.getProperty("user.name")) .on(name -> name.length() > 3) .apply(name -> System.out.println("Welcome, " + name));In the above example, if the username length is less than or equal to 3, the value will be discarded, and no action will be taken.
- Since:
- 1.0.0
- Author:
- Mercy
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedConfigurer(java.lang.String name)protectedConfigurer(java.lang.String name, java.util.function.Supplier<T> valueSupplier)protectedConfigurer(java.lang.String name, T value)protectedConfigurer(java.util.function.Supplier<T> valueSupplier)protectedConfigurer(T value)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidapply(java.util.function.Consumer<T> valueConsumer)<R> Configurer<R>as(java.util.function.Function<T,R> function)Configurer<T>compare(java.util.function.Supplier<T> comparedValueSupplier)Configurer<T>compare(T comparedValue)static <T> Configurer<T>configure(java.lang.String name)static <T> Configurer<T>configure(java.lang.String name, java.util.function.Supplier<T> valueSupplier)static <T> Configurer<T>configure(java.lang.String name, T value)static <T> Configurer<T>configure(java.util.function.Supplier<T> valueSupplier)static <T> Configurer<T>configure(T value)Configurer<T>on(java.util.function.Predicate<? super T> predicate)<T> Configurer<T>value(java.util.function.Supplier<T> valueSupplier)<T> Configurer<T>value(T value)
-
-
-
Constructor Detail
-
Configurer
protected Configurer(java.lang.String name)
-
Configurer
protected Configurer(java.util.function.Supplier<T> valueSupplier)
-
Configurer
protected Configurer(T value)
-
Configurer
protected Configurer(java.lang.String name, java.util.function.Supplier<T> valueSupplier)
-
Configurer
protected Configurer(java.lang.String name, T value)
-
-
Method Detail
-
value
public <T> Configurer<T> value(T value)
-
value
public <T> Configurer<T> value(java.util.function.Supplier<T> valueSupplier)
-
compare
public Configurer<T> compare(java.util.function.Supplier<T> comparedValueSupplier)
-
compare
public Configurer<T> compare(T comparedValue)
-
on
public Configurer<T> on(java.util.function.Predicate<? super T> predicate)
-
as
public <R> Configurer<R> as(java.util.function.Function<T,R> function)
-
apply
public void apply(java.util.function.Consumer<T> valueConsumer)
-
configure
public static <T> Configurer<T> configure(java.lang.String name)
-
configure
public static <T> Configurer<T> configure(java.lang.String name, T value)
-
configure
public static <T> Configurer<T> configure(java.lang.String name, java.util.function.Supplier<T> valueSupplier)
-
configure
public static <T> Configurer<T> configure(T value)
-
configure
public static <T> Configurer<T> configure(java.util.function.Supplier<T> valueSupplier)
-
-