Skip to content

Latest commit

 

History

History

mihxil-configuration

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

ConfigurationService

Maven Central javadoc

ConfigurationService is responsible for managing the Configuration thread locals.

Like this it can be consulted

Accessing configuration
import org.meeuw.configuration.Configuration;
import org.meeuw.configuration.ConfigurationService;
import org.meeuw.math.text.configuration.NumberConfiguration;
import org.meeuw.math.text.configuration.UncertaintyConfiguration;

import static org.meeuw.configuration.ConfigurationService.*;
...

Configuration configuration = getConfiguration();
NumberConfiguration aspect = configuration.getAspect(NumberConfiguration.class);
int minimalExponent = aspect.getMinimalExponent();

This would however probably mainly be used in implementations.

Actual configuration can be done in two basically distinct ways.

  • a new configuration object can be set as a thread local

  • global default configuration object can be set

temporary overrides
{
    //noinspection resource
    setConfiguration(builder ->
        builder.configure(NumberConfiguration.class,
            (numberConfiguration) -> numberConfiguration.withMinimalExponent(8)
        )
    );

    //...code...
    ConfigurationService.resetToDefaults();
}

// or using Autocloseable
try (Reset ignored = setConfiguration(builder ->
    builder.configure(NumberConfiguration.class,
        (numberConfiguration) -> numberConfiguration.withMinimalExponent(8)
    )
)) {
    ;
    //...code...
}

There are some utilities in ConfigurationService that makes this process a bit easier.

temporary overrides utilities
withConfiguration((con) ->
        con.configure(UncertaintyConfiguration.class,
                (uncertaintyConfiguration) -> uncertaintyConfiguration.withNotation(UncertaintyConfiguration.Notation.PARENTHESES))
            .configure(NumberConfiguration.class,
                (numberConfiguration) -> numberConfiguration.withMinimalExponent(3))
    , () -> {
        // code

    });

Global defaults can be set similarly

setting global defaults
defaultConfiguration((configurationBuilder) ->
    configurationBuilder.configure(NumberConfiguration.class, c -> c.withMinimalExponent(4))
        .configure(UncertaintyConfiguration.class, c -> c.withNotation(UncertaintyConfiguration.Notation.PLUS_MINUS))
);

ConfigurationService itself is not actually math related, and is released in a separate artifact.