MultiContentSubjectProvider.java

1
package fr.sii.ogham.core.subject.provider;
2
3
import fr.sii.ogham.core.message.Message;
4
import fr.sii.ogham.core.message.content.Content;
5
import fr.sii.ogham.core.message.content.MultiContent;
6
7
/**
8
 * Subject provider that is able to handle messages with {@link MultiContent}.
9
 * The aim is to try to generate a subject from the {@link MultiContent}. The
10
 * subject generation is delegated to another subject provider. Each part of the
11
 * {@link MultiContent} is extracted and the delegated subject provider is
12
 * called with the content part.
13
 * <ul>
14
 * <li>
15
 * If one of the content part could be used to generate the subject then this
16
 * subject is returned.</li>
17
 * <li>If several content parts could be used to generate the subject then only
18
 * the first generated subject is used.</li>
19
 * <li>If none of the content part could generate a subject then
20
 * <code>null</code> is returned.</li>
21
 * <li>If the content is not a {@link MultiContent} then null is returned.</li>
22
 * </ul>
23
 * 
24
 * @author Aurélien Baudet
25
 *
26
 */
27
public class MultiContentSubjectProvider implements SubjectProvider {
28
	/**
29
	 * The delegate subject provider that is applied on every content part
30
	 */
31
	private SubjectProvider provider;
32
33
	public MultiContentSubjectProvider(SubjectProvider provider) {
34
		super();
35
		this.provider = provider;
36
	}
37
38
	@Override
39
	public String provide(Message message) {
40 1 1. provide : negated conditional → RUN_ERROR
		if (message.getContent() instanceof MultiContent) {
41
			MultiContent multiContent = (MultiContent) message.getContent();
42
			for (Content content : multiContent.getContents()) {
43 1 1. provide : removed call to fr/sii/ogham/core/message/Message::setContent → RUN_ERROR
				message.setContent(content);
44
				String subject = provider.provide(message);
45 1 1. provide : removed call to fr/sii/ogham/core/message/Message::setContent → RUN_ERROR
				message.setContent(multiContent);
46 1 1. provide : negated conditional → RUN_ERROR
				if (subject != null) {
47 1 1. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/MultiContentSubjectProvider::provide → RUN_ERROR
					return subject;
48
				}
49
			}
50
		}
51 1 1. provide : replaced return value with "" for fr/sii/ogham/core/subject/provider/MultiContentSubjectProvider::provide → RUN_ERROR
		return null;
52
	}
53
54
}

Mutations

40

1.1
Location : provide
Killed by :
negated conditional → RUN_ERROR

43

1.1
Location : provide
Killed by :
removed call to fr/sii/ogham/core/message/Message::setContent → RUN_ERROR

45

1.1
Location : provide
Killed by :
removed call to fr/sii/ogham/core/message/Message::setContent → RUN_ERROR

46

1.1
Location : provide
Killed by :
negated conditional → RUN_ERROR

47

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

51

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

Active mutators

Tests examined


Report generated by PIT 1.13.1