SimpleConverterBuilder.java

1
package fr.sii.ogham.core.builder.env;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import fr.sii.ogham.core.builder.configuration.MayOverride;
7
import fr.sii.ogham.core.convert.Converter;
8
import fr.sii.ogham.core.convert.ConverterRegistry;
9
import fr.sii.ogham.core.convert.DefaultConverter;
10
import fr.sii.ogham.core.convert.SupportingConverter;
11
import fr.sii.ogham.core.fluent.AbstractParent;
12
13
/**
14
 * A {@link ConverterBuilder} that builds the converter:
15
 * <ul>
16
 * <li>If a custom converter is defined, use it</li>
17
 * <li>If no custom converter, use {@link DefaultConverter}</li>
18
 * <li>If {@link DefaultConverter} or custom converter that also implements
19
 * {@link ConverterRegistry}, register all previously registered
20
 * {@link SupportingConverter}s</li>
21
 * </ul>
22
 * 
23
 * @author Aurélien Baudet
24
 *
25
 * @param <P>
26
 *            the type of the parent builder (when calling {@link #and()}
27
 *            method)
28
 */
29
public class SimpleConverterBuilder<P> extends AbstractParent<P> implements ConverterBuilder<P> {
30
	private List<SupportingConverter> delegates;
31
	private Converter converter;
32
	private Converter defaultConverter;
33
34
	/**
35
	 * Initializes the builder with the provided parent. The list of
36
	 * {@link SupportingConverter}s is initialized with an empty list.
37
	 * 
38
	 * @param parent
39
	 *            the parent builder
40
	 */
41
	public SimpleConverterBuilder(P parent) {
42
		super(parent);
43
		delegates = new ArrayList<>();
44
	}
45
46
	/**
47
	 * Copies values from other parameter to this instance.
48
	 * 
49
	 * @param parent
50
	 *            the parent builder
51
	 * @param other
52
	 *            the other builder that needs to be copied
53
	 */
54
	public SimpleConverterBuilder(P parent, SimpleConverterBuilder<?> other) {
55
		this(parent);
56
		this.converter = other.converter;
57
		this.delegates = new ArrayList<>(other.delegates);
58
	}
59
60
	@Override
61
	public SimpleConverterBuilder<P> override(Converter converter) {
62
		this.converter = converter;
63 2 1. override : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::override → SURVIVED
2. override : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::override → NO_COVERAGE
		return this;
64
	}
65
66
	@Override
67
	public SimpleConverterBuilder<P> register(SupportingConverter converter) {
68
		delegates.add(converter);
69 2 1. register : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::register → SURVIVED
2. register : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::register → NO_COVERAGE
		return this;
70
	}
71
72
	@Override
73
	public ConverterBuilder<P> defaultConverter(MayOverride<Converter> converter) {
74
		defaultConverter = converter.override(defaultConverter);
75 2 1. defaultConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::defaultConverter → NO_COVERAGE
2. defaultConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::defaultConverter → SURVIVED
		return this;
76
	}
77
78
	/**
79
	 * Build the converter:
80
	 * <ul>
81
	 * <li>If a custom converter is defined, use it</li>
82
	 * <li>If no custom converter, use {@link DefaultConverter}</li>
83
	 * <li>If {@link DefaultConverter} or custom converter that also implements
84
	 * {@link ConverterRegistry}, register all previously registered
85
	 * {@link SupportingConverter}s</li>
86
	 * </ul>
87
	 */
88
	@Override
89
	public Converter build() {
90
		Converter builtConverter = buildBaseConverter();
91 3 1. build : negated conditional → NO_COVERAGE
2. build : negated conditional → SURVIVED
3. build : negated conditional → KILLED
		if (builtConverter instanceof ConverterRegistry) {
92
			for (SupportingConverter conv : delegates) {
93
				((ConverterRegistry) builtConverter).register(conv);
94
			}
95
		}
96 8 1. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → NO_COVERAGE
2. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
3. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
4. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
5. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
6. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
7. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
8. build : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED
		return builtConverter;
97
	}
98
99
	private Converter buildBaseConverter() {
100 8 1. buildBaseConverter : negated conditional → NO_COVERAGE
2. buildBaseConverter : negated conditional → TIMED_OUT
3. buildBaseConverter : negated conditional → KILLED
4. buildBaseConverter : negated conditional → KILLED
5. buildBaseConverter : negated conditional → KILLED
6. buildBaseConverter : negated conditional → KILLED
7. buildBaseConverter : negated conditional → KILLED
8. buildBaseConverter : negated conditional → KILLED
		if (converter != null) {
101 2 1. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → NO_COVERAGE
2. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
			return converter;
102
		}
103 4 1. buildBaseConverter : negated conditional → SURVIVED
2. buildBaseConverter : negated conditional → NO_COVERAGE
3. buildBaseConverter : negated conditional → KILLED
4. buildBaseConverter : negated conditional → KILLED
		if (defaultConverter != null) {
104 8 1. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → NO_COVERAGE
2. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
3. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
4. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
5. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
6. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
7. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
8. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
			return defaultConverter;
105
		}
106 3 1. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → NO_COVERAGE
2. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
3. buildBaseConverter : replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED
		return new DefaultConverter();
107
	}
108
}

Mutations

63

1.1
Location : override
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::override → SURVIVED

2.2
Location : override
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::override → NO_COVERAGE

69

1.1
Location : register
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::register → SURVIVED

2.2
Location : register
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::register → NO_COVERAGE

75

1.1
Location : defaultConverter
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::defaultConverter → NO_COVERAGE

2.2
Location : defaultConverter
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::defaultConverter → SURVIVED

91

1.1
Location : build
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : build
Killed by : oghamcore.it.core.convert.CustomConverterTest.asDeveloperIUseARegisterCustomConverter(oghamcore.it.core.convert.CustomConverterTest)
negated conditional → KILLED

3.3
Location : build
Killed by : none
negated conditional → SURVIVED

96

1.1
Location : build
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateShouldBeAbleToCallStaticMethodsWithCustomVariableName(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

2.2
Location : build
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

3.3
Location : build
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

4.4
Location : build
Killed by : oghamspringbootv1autoconfigure.it.StaticMethodsAccessTest.emailUsingFreemarkerTemplateShouldBeAbleToCallStaticMethods(oghamspringbootv1autoconfigure.it.StaticMethodsAccessTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

5.5
Location : build
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → NO_COVERAGE

6.6
Location : build
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.oghamPropertyShouldOverride(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

7.7
Location : build
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

8.8
Location : build
Killed by : oghamcore.it.core.convert.CustomConverterTest.asDeveloperIUseMyCustomConverter(oghamcore.it.core.convert.CustomConverterTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::build → KILLED

100

1.1
Location : buildBaseConverter
Killed by : oghamspringbootv1autoconfigure.it.StaticMethodsAccessTest.emailUsingFreemarkerTemplateShouldBeAbleToCallStaticMethods(oghamspringbootv1autoconfigure.it.StaticMethodsAccessTest)
negated conditional → KILLED

2.2
Location : buildBaseConverter
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
negated conditional → KILLED

3.3
Location : buildBaseConverter
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
negated conditional → KILLED

4.4
Location : buildBaseConverter
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

5.5
Location : buildBaseConverter
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.oghamPropertyShouldOverride(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
negated conditional → KILLED

6.6
Location : buildBaseConverter
Killed by : none
negated conditional → NO_COVERAGE

7.7
Location : buildBaseConverter
Killed by : oghamcore.it.core.convert.CustomConverterTest.asDeveloperIUseMyCustomConverter(oghamcore.it.core.convert.CustomConverterTest)
negated conditional → KILLED

8.8
Location : buildBaseConverter
Killed by : none
negated conditional → TIMED_OUT

101

1.1
Location : buildBaseConverter
Killed by : oghamcore.it.core.convert.CustomConverterTest.asDeveloperIUseMyCustomConverter(oghamcore.it.core.convert.CustomConverterTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

2.2
Location : buildBaseConverter
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → NO_COVERAGE

103

1.1
Location : buildBaseConverter
Killed by : none
negated conditional → SURVIVED

2.2
Location : buildBaseConverter
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.oghamPropertyShouldOverride(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
negated conditional → KILLED

3.3
Location : buildBaseConverter
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : buildBaseConverter
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

104

1.1
Location : buildBaseConverter
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

2.2
Location : buildBaseConverter
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → NO_COVERAGE

3.3
Location : buildBaseConverter
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

4.4
Location : buildBaseConverter
Killed by : oghamall.it.configuration.ThymeleafConfigurationTest.asDeveloperIDefineCustomPathPrefixInMyOwnCode(oghamall.it.configuration.ThymeleafConfigurationTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

5.5
Location : buildBaseConverter
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateShouldBeAbleToCallStaticMethodsWithCustomVariableName(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

6.6
Location : buildBaseConverter
Killed by : oghamcore.it.core.sender.AutoRetryTest.smsSentSuccessfullyOnFirstExecution(oghamcore.it.core.sender.AutoRetryTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

7.7
Location : buildBaseConverter
Killed by : oghamspringbootv1autoconfigure.it.StaticMethodsAccessTest.emailUsingFreemarkerTemplateShouldBeAbleToCallStaticMethods(oghamspringbootv1autoconfigure.it.StaticMethodsAccessTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

8.8
Location : buildBaseConverter
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

106

1.1
Location : buildBaseConverter
Killed by : none
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → NO_COVERAGE

2.2
Location : buildBaseConverter
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.oghamPropertyShouldOverride(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

3.3
Location : buildBaseConverter
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/core/builder/env/SimpleConverterBuilder::buildBaseConverter → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM