FirstSupportingSubjectProvider.java

1
package fr.sii.ogham.core.subject.provider;
2
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6
7
import fr.sii.ogham.core.message.Message;
8
9
/**
10
 * Apply every {@link SubjectProvider} in order until one subject can be
11
 * generated.
12
 * 
13
 * @author Aurélien Baudet
14
 *
15
 */
16
public class FirstSupportingSubjectProvider implements SubjectProvider {
17
	/**
18
	 * The list of subject providers
19
	 */
20
	private List<SubjectProvider> providers;
21
22
	public FirstSupportingSubjectProvider(SubjectProvider... providers) {
23
		this(new ArrayList<>(Arrays.asList(providers)));
24
	}
25
26
	public FirstSupportingSubjectProvider(List<SubjectProvider> providers) {
27
		super();
28
		this.providers = providers;
29
	}
30
31
	@Override
32
	public String provide(Message message) {
33
		for (SubjectProvider provider : providers) {
34
			String subject = provider.provide(message);
35 4 1. provide : negated conditional → SURVIVED
2. provide : negated conditional → NO_COVERAGE
3. provide : negated conditional → TIMED_OUT
4. provide : negated conditional → KILLED
			if (subject != null) {
36 3 1. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → NO_COVERAGE
2. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → TIMED_OUT
3. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → KILLED
				return subject;
37
			}
38
		}
39 3 1. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → NO_COVERAGE
2. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → SURVIVED
3. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → KILLED
		return null;
40
	}
41
42
	/**
43
	 * Register a new provider. The provider is added at the end. If one of the
44
	 * previously registered providers can provide a subject, then this provider
45
	 * will not be called.
46
	 * 
47
	 * @param provider
48
	 *            the provider to register
49
	 */
50
	public void addProvider(SubjectProvider provider) {
51
		providers.add(provider);
52
	}
53
}

Mutations

35

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

2.2
Location : provide
Killed by : oghamall.it.email.EmailExtractSubjectTest.subjectExtractedFromTextWithDefaultSubjectShouldSendWithSubjectExtractedFromText(oghamall.it.email.EmailExtractSubjectTest)
negated conditional → KILLED

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

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

36

1.1
Location : provide
Killed by : none
replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → NO_COVERAGE

2.2
Location : provide
Killed by : oghamall.it.email.EmailExtractSubjectTest.subjectExtractedFromTextWithDefaultSubjectShouldSendWithSubjectExtractedFromText(oghamall.it.email.EmailExtractSubjectTest)
replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → KILLED

3.3
Location : provide
Killed by : none
replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → TIMED_OUT

39

1.1
Location : provide
Killed by : none
replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → NO_COVERAGE

2.2
Location : provide
Killed by : oghamall.it.email.EmailExtractSubjectTest.noSubjectInContentsWithoutDefaultSubjectShouldSendWithoutSubject(oghamall.it.email.EmailExtractSubjectTest)
replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → KILLED

3.3
Location : provide
Killed by : none
replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → SURVIVED

Active mutators

Tests examined


Report generated by PIT OGHAM