yangys
2024-03-27 44028c2d1a7f21da831cb07ecb1b4a7873d8627b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.qianwen.core.notify.template;
 
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import com.qianwen.core.cache.utils.CacheUtil;
import com.qianwen.core.notify.NotifyConstants;
import com.qianwen.core.notify.NotifyType;
import com.qianwen.core.tool.utils.Func;
 
/* loaded from: blade-starter-notify-9.3.0.0-SNAPSHOT.jar:org/springblade/core/notify/template/AbstractTemplateManager.class */
public abstract class AbstractTemplateManager implements TemplateManager {
    protected Map<String, Map<String, TemplateProvider>> providers = new ConcurrentHashMap();
    private Map<String, Template> templates = new ConcurrentHashMap();
 
    protected abstract TemplateProperties getProperties(NotifyType type, String id);
 
    protected void register(TemplateProvider provider) {
        this.providers.computeIfAbsent(provider.getType().getId(), ignore -> {
            return new ConcurrentHashMap();
        }).put(provider.getProvider().getId(), provider);
    }
 
    @Override // com.qianwen.core.notify.template.TemplateManager
    public Template createTemplate(NotifyType type, TemplateProperties properties) {
        Map<String, TemplateProvider> providerMap = (Map) Optional.ofNullable(this.providers.get(type.getId())).orElseThrow(() -> {
            return new UnsupportedOperationException("不支持的通知类型:" + properties.getType());
        });
        TemplateProvider templateProvider = (TemplateProvider) Optional.ofNullable(providerMap.get(properties.getProvider())).orElseThrow(() -> {
            return new UnsupportedOperationException("不支持的服务商:" + properties.getProvider());
        });
        return templateProvider.createTemplate(properties);
    }
 
    public TemplateProperties getReallyTemplateProperties(NotifyType type, String id) {
        TemplateProperties notifierTemplate = (TemplateProperties) CacheUtil.get(NotifyConstants.NOTIFY_CACHE, NotifyConstants.NOTIFIER_TEMPLATE_CODE, id, () -> {
            TemplateProperties result = getProperties(type, id);
            return result;
        }, false);
        return notifierTemplate;
    }
 
    @Override // com.qianwen.core.notify.template.TemplateManager
    public Template getTemplate(NotifyType type, String id) {
        Template template;
        TemplateProperties templateProperties = getReallyTemplateProperties(type, id);
        Template templateCached = this.templates.get(id);
        if (Func.isEmpty(templateCached) || !Func.equals(templateProperties, templateCached)) {
            synchronized (AbstractTemplateManager.class) {
                template = createTemplate(type, templateProperties);
                this.templates.put(id, template);
            }
            return template;
        }
        return this.templates.get(id);
    }
 
    @Override // com.qianwen.core.notify.template.TemplateManager
    public void reload(String templateId) {
        this.templates.remove(templateId);
    }
}