| 1 | package fr.sii.ogham.core.message.content; | |
| 2 | ||
| 3 | import fr.sii.ogham.core.resource.path.ResourcePath; | |
| 4 | import fr.sii.ogham.core.resource.path.UnresolvedPath; | |
| 5 | import fr.sii.ogham.core.template.context.BeanContext; | |
| 6 | import fr.sii.ogham.core.template.context.Context; | |
| 7 | import fr.sii.ogham.core.template.context.NullContext; | |
| 8 | ||
| 9 | /** | |
| 10 | * <p> | |
| 11 | * A shortcut for using several templates with same context. | |
| 12 | * </p> | |
| 13 | * <p> | |
| 14 | * You have to put all templates to include at once at the same place. Each file | |
| 15 | * must be named identically. Only the extension must be different. | |
| 16 | * </p> | |
| 17 | * <p> | |
| 18 | * Then you only need to indicate the path to the templates without any | |
| 19 | * extension and provide the context. | |
| 20 | * </p> | |
| 21 | * <p> | |
| 22 | * You can also specify all the extensions/variants to append to the template | |
| 23 | * path. By default, the extensions/variants will be {@link EmailVariant#HTML} | |
| 24 | * and {@link EmailVariant#TEXT} | |
| 25 | * </p> | |
| 26 | * | |
| 27 | * @author Aurélien Baudet | |
| 28 | * | |
| 29 | */ | |
| 30 | public class MultiTemplateContent extends MultiContent { | |
| 31 | ||
| 32 | /** | |
| 33 | * Initialize with the template path (without extension/variant) and the | |
| 34 | * context. You may also specify the extensions to use. | |
| 35 | * | |
| 36 | * @param templatePath | |
| 37 | * the path to the template (without extension/variant) | |
| 38 | * @param context | |
| 39 | * the context to share | |
| 40 | * @param variants | |
| 41 | * the variants to specify | |
| 42 | */ | |
| 43 | public MultiTemplateContent(String templatePath, Context context, Variant... variants) { | |
| 44 | this(new UnresolvedPath(templatePath), context, variants); | |
| 45 | } | |
| 46 | ||
| 47 | /** | |
| 48 | * Initialize with the template path (without extension/variant) and the | |
| 49 | * context. It uses the default variants ({@link EmailVariant#HTML} and | |
| 50 | * {@link EmailVariant#TEXT}). | |
| 51 | * | |
| 52 | * @param templatePath | |
| 53 | * the path to the template (without extension/variant) | |
| 54 | * @param context | |
| 55 | * the context to share | |
| 56 | */ | |
| 57 | public MultiTemplateContent(String templatePath, Context context) { | |
| 58 | this(new UnresolvedPath(templatePath), context); | |
| 59 | } | |
| 60 | ||
| 61 | /** | |
| 62 | * Initialize with the template path (without extension/variant) and the | |
| 63 | * context as simple bean. You may also specify the extensions/variants to | |
| 64 | * use. | |
| 65 | * | |
| 66 | * @param templatePath | |
| 67 | * the path to the template (without extension/variant) | |
| 68 | * @param bean | |
| 69 | * the context to share as a simple POJO object | |
| 70 | * @param extensions | |
| 71 | * the extensions to specify | |
| 72 | */ | |
| 73 | public MultiTemplateContent(String templatePath, Object bean, Variant... extensions) { | |
| 74 | this(new UnresolvedPath(templatePath), bean, extensions); | |
| 75 | } | |
| 76 | ||
| 77 | /** | |
| 78 | * Initialize with the template path (without extension/variant) and the | |
| 79 | * context as simple bean. It uses the default variants ( | |
| 80 | * {@link EmailVariant#HTML} and {@link EmailVariant#TEXT}). | |
| 81 | * | |
| 82 | * @param templatePath | |
| 83 | * the path to the template (without extension/variant) | |
| 84 | * @param bean | |
| 85 | * the context to share as a simple POJO object | |
| 86 | */ | |
| 87 | public MultiTemplateContent(String templatePath, Object bean) { | |
| 88 | this(new UnresolvedPath(templatePath), bean); | |
| 89 | } | |
| 90 | | |
| 91 | ||
| 92 | /** | |
| 93 | * Initialize with the template path (without extension/variant) and the | |
| 94 | * context. You may also specify the extensions to use. | |
| 95 | * | |
| 96 | * @param templatePath | |
| 97 | * the path to the template (without extension/variant) | |
| 98 | * @param context | |
| 99 | * the context to share | |
| 100 | * @param variants | |
| 101 | * the variants to specify | |
| 102 | */ | |
| 103 | public MultiTemplateContent(ResourcePath templatePath, Context context, Variant... variants) { | |
| 104 | super(createTemplates(templatePath, context, variants)); | |
| 105 | } | |
| 106 | ||
| 107 | /** | |
| 108 | * Initialize with the template path (without extension/variant) and the | |
| 109 | * context. It uses the default variants ({@link EmailVariant#HTML} and | |
| 110 | * {@link EmailVariant#TEXT}). | |
| 111 | * | |
| 112 | * @param templatePath | |
| 113 | * the path to the template (without extension/variant) | |
| 114 | * @param context | |
| 115 | * the context to share | |
| 116 | */ | |
| 117 | public MultiTemplateContent(ResourcePath templatePath, Context context) { | |
| 118 | this(templatePath, context, EmailVariant.TEXT, EmailVariant.HTML); | |
| 119 | } | |
| 120 | ||
| 121 | /** | |
| 122 | * Initialize with the template path (without extension/variant) and the | |
| 123 | * context as simple bean. You may also specify the extensions/variants to | |
| 124 | * use. | |
| 125 | * | |
| 126 | * @param templatePath | |
| 127 | * the path to the template (without extension/variant) | |
| 128 | * @param bean | |
| 129 | * the context to share as a simple POJO object | |
| 130 | * @param extensions | |
| 131 | * the extensions to specify | |
| 132 | */ | |
| 133 | public MultiTemplateContent(ResourcePath templatePath, Object bean, Variant... extensions) { | |
| 134 |
1
1. <init> : negated conditional → NO_COVERAGE |
this(templatePath, bean != null ? new BeanContext(bean) : new NullContext(), extensions); |
| 135 | } | |
| 136 | ||
| 137 | /** | |
| 138 | * Initialize with the template path (without extension/variant) and the | |
| 139 | * context as simple bean. It uses the default variants ( | |
| 140 | * {@link EmailVariant#HTML} and {@link EmailVariant#TEXT}). | |
| 141 | * | |
| 142 | * @param templatePath | |
| 143 | * the path to the template (without extension/variant) | |
| 144 | * @param bean | |
| 145 | * the context to share as a simple POJO object | |
| 146 | */ | |
| 147 | public MultiTemplateContent(ResourcePath templatePath, Object bean) { | |
| 148 |
2
1. <init> : negated conditional → NO_COVERAGE 2. <init> : negated conditional → KILLED |
this(templatePath, bean != null ? new BeanContext(bean) : new NullContext()); |
| 149 | } | |
| 150 | ||
| 151 | private static TemplateContent[] createTemplates(ResourcePath templatePath, Context context, Variant[] variants) { | |
| 152 | TemplateContent[] contents = new TemplateContent[variants.length]; | |
| 153 |
4
1. createTemplates : changed conditional boundary → NO_COVERAGE 2. createTemplates : negated conditional → NO_COVERAGE 3. createTemplates : changed conditional boundary → KILLED 4. createTemplates : negated conditional → KILLED |
for (int i = 0; i < variants.length; i++) { |
| 154 | contents[i] = new TemplateVariantContent(templatePath, variants[i], context); | |
| 155 | } | |
| 156 |
2
1. createTemplates : replaced return value with null for fr/sii/ogham/core/message/content/MultiTemplateContent::createTemplates → NO_COVERAGE 2. createTemplates : replaced return value with null for fr/sii/ogham/core/message/content/MultiTemplateContent::createTemplates → KILLED |
return contents; |
| 157 | } | |
| 158 | } | |
Mutations | ||
| 134 |
1.1 |
|
| 148 |
1.1 2.2 |
|
| 153 |
1.1 2.2 3.3 4.4 |
|
| 156 |
1.1 2.2 |