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 1 1. provide : negated conditional → RUN_ERROR
			if (subject != null) {
36 1 1. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → NO_COVERAGE
				return subject;
37
			}
38
		}
39 1 1. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/FirstSupportingSubjectProvider::provide → RUN_ERROR
		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 :
negated conditional → RUN_ERROR

36

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

39

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

Active mutators

Tests examined


Report generated by PIT 1.13.1