RecipientNumberFormatBuilder.java

1
package fr.sii.ogham.sms.builder;
2
3
import fr.sii.ogham.core.builder.Builder;
4
import fr.sii.ogham.core.builder.configuration.ConfigurationValueBuilder;
5
import fr.sii.ogham.core.builder.configuration.ConfigurationValueBuilderHelper;
6
import fr.sii.ogham.core.builder.configurer.Configurer;
7
import fr.sii.ogham.core.builder.context.BuildContext;
8
import fr.sii.ogham.core.builder.env.EnvironmentBuilder;
9
import fr.sii.ogham.core.fluent.AbstractParent;
10
import fr.sii.ogham.sms.message.PhoneNumber;
11
import fr.sii.ogham.sms.message.addressing.AddressedPhoneNumber;
12
import fr.sii.ogham.sms.message.addressing.translator.CompositePhoneNumberTranslator;
13
import fr.sii.ogham.sms.message.addressing.translator.DefaultHandler;
14
import fr.sii.ogham.sms.message.addressing.translator.InternationalNumberFormatHandler;
15
import fr.sii.ogham.sms.message.addressing.translator.PhoneNumberTranslator;
16
17
/**
18
 * Defines which standard conversions may be applied on the phone number to
19
 * convert it from a {@link PhoneNumber} to an {@link AddressedPhoneNumber}.
20
 * 
21
 * @author Aurélien Baudet
22
 *
23
 */
24
public class RecipientNumberFormatBuilder extends AbstractParent<RecipientNumberBuilder> implements Builder<PhoneNumberTranslator> {
25
	private final BuildContext buildContext;
26
	private final ConfigurationValueBuilderHelper<RecipientNumberFormatBuilder, Boolean> enableInternationalValueBuilder;
27
28
	/**
29
	 * Initializes the builder with a parent builder. The parent builder is used
30
	 * when calling {@link #and()} method. The {@link EnvironmentBuilder} is
31
	 * used to evaluate properties when {@link #build()} method is called.
32
	 * 
33
	 * @param parent
34
	 *            the parent builder
35
	 * @param buildContext
36
	 *            for registering instances and property evaluation
37
	 */
38
	public RecipientNumberFormatBuilder(RecipientNumberBuilder parent, BuildContext buildContext) {
39
		super(parent);
40
		this.buildContext = buildContext;
41
		enableInternationalValueBuilder = buildContext.newConfigurationValueBuilder(this, Boolean.class);
42
	}
43
44
	/**
45
	 * Enable/disable international number conversion: if the sender starts with
46
	 * a "+", TON is set to 1, and NPI is set to 1.
47
	 * 
48
	 * <p>
49
	 * The value set using this method takes precedence over any property and
50
	 * default value configured using {@link #internationalNumber()}.
51
	 * 
52
	 * <pre>
53
	 * .internationalNumber(false)
54
	 * .internationalNumber()
55
	 *   .properties("${custom.property.high-priority}", "${custom.property.low-priority}")
56
	 *   .defaultValue(true)
57
	 * </pre>
58
	 * 
59
	 * <pre>
60
	 * .internationalNumber(false)
61
	 * .internationalNumber()
62
	 *   .properties("${custom.property.high-priority}", "${custom.property.low-priority}")
63
	 *   .defaultValue(true)
64
	 * </pre>
65
	 * 
66
	 * In both cases, {@code internationalNumber(false)} is used.
67
	 * 
68
	 * <p>
69
	 * If this method is called several times, only the last value is used.
70
	 * 
71
	 * <p>
72
	 * If {@code null} value is set, it is like not setting a value at all. The
73
	 * property/default value configuration is applied.
74
	 * 
75
	 * @param enable
76
	 *            enable or disable international format
77
	 * @return this instance for fluent chaining
78
	 */
79
	public RecipientNumberFormatBuilder internationalNumber(Boolean enable) {
80 2 1. internationalNumber : removed call to fr/sii/ogham/core/builder/configuration/ConfigurationValueBuilderHelper::setValue → NO_COVERAGE
2. internationalNumber : removed call to fr/sii/ogham/core/builder/configuration/ConfigurationValueBuilderHelper::setValue → KILLED
		enableInternationalValueBuilder.setValue(enable);
81 2 1. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → NO_COVERAGE
2. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
		return this;
82
	}
83
84
	/**
85
	 * Enable/disable international number conversion: if the sender starts with
86
	 * a "+", TON is set to 1, and NPI is set to 1.
87
	 * 
88
	 * <p>
89
	 * This method is mainly used by {@link Configurer}s to register some
90
	 * property keys and/or a default value. The aim is to let developer be able
91
	 * to externalize its configuration (using system properties, configuration
92
	 * file or anything else). If the developer doesn't configure any value for
93
	 * the registered properties, the default value is used (if set).
94
	 * 
95
	 * <pre>
96
	 * .internationalNumber()
97
	 *   .properties("${custom.property.high-priority}", "${custom.property.low-priority}")
98
	 *   .defaultValue(true)
99
	 * </pre>
100
	 * 
101
	 * <p>
102
	 * Non-null value set using {@link #internationalNumber(Boolean)} takes
103
	 * precedence over property values and default value.
104
	 * 
105
	 * <pre>
106
	 * .internationalNumber(false)
107
	 * .internationalNumber()
108
	 *   .properties("${custom.property.high-priority}", "${custom.property.low-priority}")
109
	 *   .defaultValue(true)
110
	 * </pre>
111
	 * 
112
	 * The value {@code false} is used regardless of the value of the properties
113
	 * and default value.
114
	 * 
115
	 * <p>
116
	 * See {@link ConfigurationValueBuilder} for more information.
117
	 * 
118
	 * 
119
	 * @return the builder to configure property keys/default value
120
	 */
121
	public ConfigurationValueBuilder<RecipientNumberFormatBuilder, Boolean> internationalNumber() {
122 8 1. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → NO_COVERAGE
2. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
3. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
4. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
5. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
6. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
7. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
8. internationalNumber : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED
		return enableInternationalValueBuilder;
123
	}
124
125
	@Override
126
	public PhoneNumberTranslator build() {
127
		CompositePhoneNumberTranslator translator = buildContext.register(new CompositePhoneNumberTranslator());
128 4 1. build : negated conditional → SURVIVED
2. build : negated conditional → NO_COVERAGE
3. build : negated conditional → TIMED_OUT
4. build : negated conditional → KILLED
		if (enabled(enableInternationalValueBuilder)) {
129 3 1. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → NO_COVERAGE
2. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → SURVIVED
3. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → KILLED
			translator.add(buildContext.register(new InternationalNumberFormatHandler()));
130
		}
131 4 1. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → NO_COVERAGE
2. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → SURVIVED
3. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → KILLED
4. build : removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → KILLED
		translator.add(buildContext.register(new DefaultHandler()));
132 6 1. build : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → SURVIVED
2. build : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → NO_COVERAGE
3. build : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED
4. build : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED
5. build : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED
6. build : replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED
		return translator;
133
	}
134
135
	private static boolean enabled(ConfigurationValueBuilderHelper<?, Boolean> enableInternational) {
136 5 1. enabled : replaced boolean return with false for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → SURVIVED
2. enabled : replaced boolean return with false for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → NO_COVERAGE
3. enabled : replaced boolean return with true for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → SURVIVED
4. enabled : replaced boolean return with true for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → NO_COVERAGE
5. enabled : replaced boolean return with false for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → KILLED
		return enableInternational.getValue(false);
137
	}
138
}

Mutations

80

1.1
Location : internationalNumber
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateInternational(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
removed call to fr/sii/ogham/core/builder/configuration/ConfigurationValueBuilderHelper::setValue → KILLED

2.2
Location : internationalNumber
Killed by : none
removed call to fr/sii/ogham/core/builder/configuration/ConfigurationValueBuilderHelper::setValue → NO_COVERAGE

81

1.1
Location : internationalNumber
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateNull(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

2.2
Location : internationalNumber
Killed by : none
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → NO_COVERAGE

122

1.1
Location : internationalNumber
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

2.2
Location : internationalNumber
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

3.3
Location : internationalNumber
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

4.4
Location : internationalNumber
Killed by : none
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → NO_COVERAGE

5.5
Location : internationalNumber
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

6.6
Location : internationalNumber
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

7.7
Location : internationalNumber
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

8.8
Location : internationalNumber
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::internationalNumber → KILLED

128

1.1
Location : build
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateInternational(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
negated conditional → KILLED

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

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

4.4
Location : build
Killed by : none
negated conditional → TIMED_OUT

129

1.1
Location : build
Killed by : none
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → NO_COVERAGE

2.2
Location : build
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateInternational(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → KILLED

3.3
Location : build
Killed by : none
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → SURVIVED

131

1.1
Location : build
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateNull(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → KILLED

2.2
Location : build
Killed by : oghamcloudhopper.it.ConnectionFailureTest.invalidSystemId(oghamcloudhopper.it.ConnectionFailureTest)
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → KILLED

3.3
Location : build
Killed by : none
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → NO_COVERAGE

4.4
Location : build
Killed by : none
removed call to fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::add → SURVIVED

132

1.1
Location : build
Killed by : none
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → SURVIVED

2.2
Location : build
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.smsUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED

3.3
Location : build
Killed by : oghamcloudhopper.it.ConnectionFailureTest.invalidSystemId(oghamcloudhopper.it.ConnectionFailureTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED

4.4
Location : build
Killed by : none
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → NO_COVERAGE

5.5
Location : build
Killed by : oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest.smsUsingFreemarkerTemplateShouldResolveBeans(oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED

6.6
Location : build
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateInternational(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
replaced return value with null for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::build → KILLED

136

1.1
Location : enabled
Killed by : oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest.translateInternational(oghamall.it.sms.message.addressing.translator.ReceiverPhoneNumberTranslatorTest)
replaced boolean return with false for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → KILLED

2.2
Location : enabled
Killed by : none
replaced boolean return with false for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → SURVIVED

3.3
Location : enabled
Killed by : none
replaced boolean return with false for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → NO_COVERAGE

4.4
Location : enabled
Killed by : none
replaced boolean return with true for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → SURVIVED

5.5
Location : enabled
Killed by : none
replaced boolean return with true for fr/sii/ogham/sms/builder/RecipientNumberFormatBuilder::enabled → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT OGHAM