CompositePhoneNumberTranslator.java

1
package fr.sii.ogham.sms.message.addressing.translator;
2
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.List;
6
7
import fr.sii.ogham.sms.exception.message.PhoneNumberTranslatorException;
8
import fr.sii.ogham.sms.message.PhoneNumber;
9
import fr.sii.ogham.sms.message.addressing.AddressedPhoneNumber;
10
11
/**
12
 * Composite phone number translator, delegating the translation to a list of
13
 * handlers to try. It will use the first handler supporting the phone number
14
 * format.
15
 * 
16
 * @author cdejonghe
17
 * 
18
 */
19
public class CompositePhoneNumberTranslator implements PhoneNumberTranslator {
20
	private final List<PhoneNumberHandler> handlerList = new ArrayList<>();
21
22
	/**
23
	 * Initializes the translator with the given handlers.
24
	 * 
25
	 * @param handlers
26
	 *            all the handlers to request when trying to translate a phone
27
	 *            number
28
	 */
29
	public CompositePhoneNumberTranslator(PhoneNumberHandler... handlers) {
30
		Collections.addAll(handlerList, handlers);
31
	}
32
33
	/**
34
	 * 
35
	 * @param handler
36
	 *            the handler to add
37
	 */
38
	public void add(PhoneNumberHandler handler) {
39
		handlerList.add(handler);
40
	}
41
42
	@Override
43
	public AddressedPhoneNumber translate(PhoneNumber phoneNumber) throws PhoneNumberTranslatorException {
44
		for (PhoneNumberHandler currentHandler : handlerList) {
45 4 1. translate : negated conditional → NO_COVERAGE
2. translate : negated conditional → TIMED_OUT
3. translate : negated conditional → KILLED
4. translate : negated conditional → KILLED
			if (currentHandler.supports(phoneNumber)) {
46 4 1. translate : replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → NO_COVERAGE
2. translate : replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → TIMED_OUT
3. translate : replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → KILLED
4. translate : replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → KILLED
				return currentHandler.translate(phoneNumber);
47
			}
48
		}
49
		throw new PhoneNumberTranslatorException("No handler referenced to translate the phone number : " + phoneNumber);
50
	}
51
}

Mutations

45

1.1
Location : translate
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : translate
Killed by : oghamcloudhopper.it.PartialConfigurationTest.nothingConfiguredAndLongMessageShouldSendOneLongMessageUsingDefaultEncoding(oghamcloudhopper.it.PartialConfigurationTest)
negated conditional → KILLED

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

4.4
Location : translate
Killed by : none
negated conditional → NO_COVERAGE

46

1.1
Location : translate
Killed by : none
replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → TIMED_OUT

2.2
Location : translate
Killed by : none
replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → NO_COVERAGE

3.3
Location : translate
Killed by : oghamcloudhopper.it.PartialConfigurationTest.nothingConfiguredAndLongMessageShouldSendOneLongMessageUsingDefaultEncoding(oghamcloudhopper.it.PartialConfigurationTest)
replaced return value with null for fr/sii/ogham/sms/message/addressing/translator/CompositePhoneNumberTranslator::translate → KILLED

4.4
Location : translate
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/message/addressing/translator/CompositePhoneNumberTranslator::translate → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM