org.thymeleaf.TemplateEngine

Here are the examples of the java api org.thymeleaf.TemplateEngine taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

149 Examples 7

19 Source : FirebaseConfigController.java
with Apache License 2.0
from zhcet-amu

@Slf4j
@RestController
public clreplaced FirebaseConfigController {

    private final FirebaseProperties firebaseProperties;

    private final TemplateEngine templateEngine;

    private Context firebaseContext;

    @Autowired
    public FirebaseConfigController(FirebaseProperties firebaseProperties, @Qualifier("extraTemplateEngine") TemplateEngine templateEngine) {
        this.firebaseProperties = firebaseProperties;
        this.templateEngine = templateEngine;
    }

    private Context getFirebaseContext() {
        if (firebaseContext == null) {
            Map<String, Object> payload = new HashMap<>();
            payload.put("config", firebaseProperties.getConfig());
            firebaseContext = new Context(Locale.getDefault(), payload);
        }
        return firebaseContext;
    }

    @Cacheable("firebase-config")
    @GetMapping("/js/firebase-config.js")
    public ResponseEnreplacedy<String> firebaseConfig() {
        String rendered = templateEngine.process("js/firebase-config", getFirebaseContext());
        return ResponseEnreplacedy.ok().contentType(MediaType.parseMediaType("text/javascript")).cacheControl(CacheControl.maxAge(365, TimeUnit.DAYS).sMaxAge(365, TimeUnit.DAYS).cachePublic()).body(rendered);
    }

    @Cacheable("firebase-messaging-sw")
    @GetMapping("/firebase-messaging-sw.js")
    public ResponseEnreplacedy<String> firebaseMessagingSw() {
        String rendered = templateEngine.process("js/firebase-messaging-sw", getFirebaseContext());
        return ResponseEnreplacedy.ok().contentType(MediaType.parseMediaType("text/javascript")).cacheControl(CacheControl.maxAge(1, TimeUnit.DAYS).sMaxAge(1, TimeUnit.DAYS)).body(rendered);
    }
}

19 Source : LinkMailService.java
with Apache License 2.0
from zhcet-amu

@Slf4j
@Service
public clreplaced LinkMailService {

    private static final String LINK_TEMPLATE = "html/link";

    private final EmailService emailService;

    private final ConfigurationService configurationService;

    private final TemplateEngine htmlTemplateEngine;

    public LinkMailService(EmailService emailService, ConfigurationService configurationService, @Qualifier("extraTemplateEngine") TemplateEngine htmlTemplateEngine) {
        this.emailService = emailService;
        this.configurationService = configurationService;
        this.htmlTemplateEngine = htmlTemplateEngine;
    }

    private String normalizeUrl(String url) {
        return configurationService.getBaseUrl() + url;
    }

    private String getUnSubscribeUrl(String recipient) {
        return String.format("%s/login/unsubscribe?email=%s&conf=%s", configurationService.getBaseUrl(), recipient, CryptoUtils.getHash(recipient));
    }

    private String render(String template, Map<String, Object> payload) {
        return htmlTemplateEngine.process(template, new Context(Locale.getDefault(), payload));
    }

    private void normalizeMessage(LinkMessage linkMessage) {
        linkMessage.validateSelf();
        if (linkMessage.getLink() == null && linkMessage.getRelativeLink() != null)
            linkMessage.setLink(normalizeUrl(linkMessage.getRelativeLink()));
    }

    private String getHtml(LinkMessage linkMessage) {
        Map<String, Object> payLoad = new HashMap<>();
        payLoad.put("link_message", linkMessage);
        return render(LINK_TEMPLATE, payLoad);
    }

    public void sendEmail(LinkMessage linkMessage, boolean allowUnSubscribe) {
        normalizeMessage(linkMessage);
        if (allowUnSubscribe && linkMessage.getBcc() == null) {
            String unSubscribeUrl = getUnSubscribeUrl(linkMessage.getRecipientEmail());
            log.debug("Adding Un-Subscribe Link {}", unSubscribeUrl);
            linkMessage.setUnSubscribeUrl(unSubscribeUrl);
        }
        log.info("Sending Email: {}", linkMessage);
        emailService.sendHtmlMail(linkMessage.getRecipientEmail(), linkMessage.getSubject(), getHtml(linkMessage), linkMessage.getBcc());
    }

    public void sendEmail(LinkMessage linkMessage) {
        sendEmail(linkMessage, true);
    }
}

19 Source : ServiceWorkerController.java
with Apache License 2.0
from zhcet-amu

@Slf4j
@RestController
public clreplaced ServiceWorkerController {

    private final TemplateEngine templateEngine;

    @Autowired
    public ServiceWorkerController(@Qualifier("extraTemplateEngine") TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }

    @Cacheable("sw")
    @GetMapping("/sw.js")
    public ResponseEnreplacedy<String> serviceWorker() {
        ClreplacedPathResource clreplacedPathResource = new ClreplacedPathResource("src/sw.mjs");
        String loaded = null;
        try {
            loaded = IOUtils.toString(clreplacedPathResource.getInputStream(), "UTF-8");
        } catch (IOException e) {
            log.error("Error loading service worker", e);
        }
        return ResponseEnreplacedy.ok().contentType(MediaType.parseMediaType("text/javascript")).cacheControl(CacheControl.maxAge(0, TimeUnit.SECONDS)).body(loaded);
    }
}

19 Source : MailSend.java
with Apache License 2.0
from yanghaiji

/**
 * <p>
 *
 * </p>
 *
 * @author Dylan-haiji
 * @version 1.0.0
 * @since 2020-03-08 14:45
 */
@Slf4j
@EnableConfigurationProperties(value = EmailProperties.clreplaced)
public clreplaced MailSend {

    @Autowired(required = false)
    private EmailProperties emailProperties;

    @Autowired(required = false)
    private JavaMailSender mailSender;

    @Autowired(required = false)
    private TemplateEngine templateEngine;

    /**
     * <p>
     * 发送带有模板的邮件
     * </p>
     * @version 1.0.0
     * @author Dylan-haiji
     * @since 2020/3/8
     * @param mailDO
     * @return void
     */
    public void sendTemplateMail(MailDO mailDO) {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
            // 发送人的邮箱
            messageHelper.setFrom(emailProperties.getUsername());
            // 发给谁 对方邮箱
            messageHelper.setTo(mailDO.getEmail());
            // 标题
            messageHelper.setSubject(mailDO.getreplacedle());
            // 使用模板thymeleaf
            Context context = new Context(LocaleContextHolder.getLocale());
            // 定义模板数据
            context.setVariables(mailDO.getAttachment());
            // 获取thymeleaf的html模板 指定模板路径
            String emailContent = templateEngine.process(mailDO.getTemplateName(), context);
            messageHelper.setText(emailContent, true);
            // 发送邮件
            mailSender.send(mimeMessage);
        } catch (MessagingException e) {
            log.error("模板邮件发送失败->message:{}", e.getMessage());
            throw new RuntimeException("邮件发送失败");
        }
    }

    /**
     * <p>
     * 发送简单纯文本邮件
     * </p>
     * @version 1.0.0
     * @author Dylan-haiji
     * @since 2020/3/8
     * @param mail
     * @return void
     */
    public void sendTextMail(MailDO mail) {
        // 建立邮件消息
        SimpleMailMessage message = new SimpleMailMessage();
        // 发送人的邮箱
        message.setFrom(emailProperties.getUsername());
        // 标题
        message.setSubject(mail.getreplacedle());
        // 发给谁 对方邮箱
        message.setTo(mail.getEmail());
        // 内容
        message.setText(mail.getContent());
        try {
            // 发送
            mailSender.send(message);
        } catch (MailException e) {
            log.error("纯文本邮件发送失败->message:{}", e.getMessage());
            throw new RuntimeException("邮件发送失败");
        }
    }
}

19 Source : MailServiceTest.java
with MIT License
from xkcoding

/**
 * <p>
 * 邮件测试
 * </p>
 *
 * @author yangkai.shen
 * @date Created in 2018-11-21 13:49
 */
public clreplaced MailServiceTest extends SpringBootDemoEmailApplicationTests {

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;

    @Autowired
    private ApplicationContext context;

    /**
     * 测试简单邮件
     */
    @Test
    public void sendSimpleMail() {
        mailService.sendSimpleMail("[email protected]", "这是一封简单邮件", "这是一封普通的SpringBoot测试邮件");
    }

    /**
     * 测试HTML邮件
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendHtmlMail() throws MessagingException {
        Context context = new Context();
        context.setVariable("project", "Spring Boot Demo");
        context.setVariable("author", "Yangkai.Shen");
        context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
        String emailTemplate = templateEngine.process("welcome", context);
        mailService.sendHtmlMail("[email protected]", "这是一封模板HTML邮件", emailTemplate);
    }

    /**
     * 测试HTML邮件,自定义模板目录
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendHtmlMail2() throws MessagingException {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setApplicationContext(context);
        templateResolver.setCacheable(false);
        templateResolver.setPrefix("clreplacedpath:/email/");
        templateResolver.setSuffix(".html");
        templateEngine.setTemplateResolver(templateResolver);
        Context context = new Context();
        context.setVariable("project", "Spring Boot Demo");
        context.setVariable("author", "Yangkai.Shen");
        context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
        String emailTemplate = templateEngine.process("test", context);
        mailService.sendHtmlMail("[email protected]", "这是一封模板HTML邮件", emailTemplate);
    }

    /**
     * 测试附件邮件
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendAttachmentsMail() throws MessagingException {
        URL resource = ResourceUtil.getResource("static/xkcoding.png");
        mailService.sendAttachmentsMail("[email protected]", "这是一封带附件的邮件", "邮件中有附件,请注意查收!", resource.getPath());
    }

    /**
     * 测试静态资源邮件
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendResourceMail() throws MessagingException {
        String rscId = "xkcoding";
        String content = "<html><body>这是带静态资源的邮件<br/><img src=\'cid:" + rscId + "\' ></body></html>";
        URL resource = ResourceUtil.getResource("static/xkcoding.png");
        mailService.sendResourceMail("[email protected]", "这是一封带静态资源的邮件", content, resource.getPath(), rscId);
    }
}

19 Source : EmailMessageSender.java
with GNU Lesser General Public License v3.0
from xkcoding

/**
 * <p>
 * 邮件发送器
 * </p>
 *
 * @author yangkai.shen
 * @date Created in 2019/10/11 14:46
 */
@Slf4j
@RequiredArgsConstructor
public clreplaced EmailMessageSender extends AbstractMessageSender<EmailMessage> {

    private final JavaMailSender mailSender;

    private final TemplateEngine templateEngine;

    @Value("${spring.mail.username:''}")
    private String username;

    /**
     * 数据校验
     *
     * @param message 消息实体
     */
    @Override
    protected void validate(EmailMessage message) {
        if (ObjectUtil.equal(message.getEmailType(), EmailType.SIMPLE)) {
            replacedertUtil.isNotEmpty(message.getAttachments(), "简单邮件不支持附件,请更换复杂邮件类型");
            replacedertUtil.isNotEmpty(message.getStaticResources(), "简单邮件不支持静态资源,请更换复杂邮件类型");
        }
    }

    /**
     * 业务处理
     *
     * @param message 消息实体
     * @return boolean
     */
    @Override
    protected boolean process(EmailMessage message) {
        switch(message.getEmailType()) {
            case SIMPLE:
                return processSimpleEmail(message);
            case MIME:
                return processMimeEmail(message);
            default:
                return false;
        }
    }

    /**
     * 处理复杂邮件类型
     *
     * @param message 邮件内容
     * @return boolean
     */
    private boolean processMimeEmail(EmailMessage message) {
        // 注意邮件发送可能出现异常,注意catch
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom("\"" + message.getFrom() + "\" <" + username + ">");
            helper.setTo(ArrayUtil.toArray(message.getTos(), String.clreplaced));
            helper.setSubject(message.getSubject());
            if (StrUtil.isNotBlank(message.getTemplate())) {
                // 使用模板生成邮件内容
                Context context = new Context();
                // 变量设置
                message.getParams().forEach(context::setVariable);
                String content = templateEngine.process(message.getTemplate(), context);
                helper.setText(content, true);
            } else {
                helper.setText(message.getContent(), true);
            }
            // 设置抄送人列表
            if (CollUtil.isEmpty(message.getCcs())) {
                helper.setCc(ArrayUtil.toArray(message.getCcs(), String.clreplaced));
            }
            // 设置附件
            if (CollUtil.isNotEmpty(message.getAttachments())) {
                for (EmailAttachment attachment : message.getAttachments()) {
                    helper.addAttachment(attachment.getAttachmentName(), attachment.getAttachment());
                }
            }
            // 设置静态资源
            if (CollUtil.isNotEmpty(message.getStaticResources())) {
                for (EmailStaticResource staticResource : message.getStaticResources()) {
                    helper.addInline(staticResource.getResourceId(), staticResource.getResource());
                }
            }
            mailSender.send(mimeMessage);
            return true;
        } catch (Exception e) {
            log.error("复杂邮件发送异常!", e);
            return false;
        }
    }

    /**
     * 处理简单邮件类型
     *
     * @param message 邮件内容
     * @return boolean
     */
    private boolean processSimpleEmail(EmailMessage message) {
        // 注意邮件发送可能出现异常,注意catch
        try {
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setFrom("\"" + message.getFrom() + "\" <" + username + ">");
            simpleMailMessage.setTo(ArrayUtil.toArray(message.getTos(), String.clreplaced));
            simpleMailMessage.setSubject(message.getSubject());
            simpleMailMessage.setText(message.getContent());
            // 设置抄送人列表
            if (CollUtil.isEmpty(message.getCcs())) {
                simpleMailMessage.setCc(ArrayUtil.toArray(message.getCcs(), String.clreplaced));
            }
            mailSender.send(simpleMailMessage);
            return true;
        } catch (Exception e) {
            log.error("简单邮件发送异常!", e);
            return false;
        }
    }

    /**
     * 失败处理
     *
     * @param message 消息实体
     */
    @Override
    protected void fail(EmailMessage message) {
        log.error("邮件发送失败,当前邮件类型:{},当前收件人列表:{}", message.getEmailType(), JSONUtil.toJsonStr(message.getTos()));
    }
}

19 Source : MessageAutoConfiguration.java
with GNU Lesser General Public License v3.0
from xkcoding

@Bean(MessageConstants.BEAN_NAME_EMAIL)
@ConditionalOnMissingBean(name = MessageConstants.BEAN_NAME_EMAIL)
@ConditionalOnProperty(value = "magic.message.email.enabled", havingValue = "true")
public EmailMessageSender emailMessageSender(JavaMailSender mailSender, @Qualifier(MessageConstants.EMAIL_TEMPLATE_ENGINE_BEAN) TemplateEngine templateEngine) {
    return new EmailMessageSender(mailSender, templateEngine);
}

19 Source : ThymeleafTest.java
with Mozilla Public License 2.0
from xjc-opensource

/**
 * 使用 Thymeleaf 渲染 HTML
 * @param template  HTML模板
 * @param params 参数
 * @return  渲染后的HTML
 */
public static String render(String template, Map<String, Object> params) {
    Context context = new Context();
    context.setVariables(params);
    TemplateEngine engine = new TemplateEngine();
    StringTemplateResolver resolver = new StringTemplateResolver();
    engine.setTemplateResolver(resolver);
    return engine.process(template, context);
}

19 Source : HttpResourceThymeleaf.java
with Mozilla Public License 2.0
from xjc-opensource

/**
 * @author ben
 * @replacedle: basic
 * @Description:
 */
public clreplaced HttpResourceThymeleaf extends HttpResourceFile {

    private final TemplateEngine engine = new TemplateEngine();

    private final String HTML_FLAG = "html";

    private final String HTM_FLAG = "htm";

    private boolean isThymeleafFile(String resPath) {
        if (resPath == null) {
            return false;
        }
        String suffixName = resPath.substring(resPath.lastIndexOf(".") + 1);
        if (suffixName.equalsIgnoreCase(HTML_FLAG) || suffixName.equalsIgnoreCase(HTM_FLAG)) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    protected ByteBuf buildRes(String resPath, Map<String, Object> parameters) {
        if (!isThymeleafFile(resPath)) {
            return super.buildRes(resPath, parameters);
        } else {
            try {
                Context context = new Context();
                context.setVariables(parameters);
                if (!engine.isInitialized()) {
                    ClreplacedLoaderTemplateResolver resolver = new ClreplacedLoaderTemplateResolver();
                    resolver.setPrefix(this.getRootDir());
                    // 设置不缓存
                    resolver.setCacheable(false);
                    engine.setTemplateResolver(resolver);
                }
                String htmlContext = engine.process(resPath, context);
                return Unpooled.copiedBuffer(htmlContext, CharsetUtil.UTF_8);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return null;
        }
    }
}

19 Source : TplConfig.java
with MIT License
from xiaodaojava

/**
 * 别的地方想使用templateEngine来处理模板,调用这个方法来获取
 * @return
 */
public static TemplateEngine getTemplateEngine() {
    final TemplateEngine templateEngine = InitTplConfig.getEngine();
    return templateEngine;
}

19 Source : ThfMailContentBuild.java
with Apache License 2.0
from Xiao-Y

/**
 * Thymeleaf邮件模板构建器
 *
 * @author liuyongtao
 * @create 2019-09-29 9:33
 */
public clreplaced ThfMailContentBuild implements MailContentBuild {

    @Autowired
    private MailTemplateService mailTemplateService;

    @Autowired
    private TemplateEngine templateEngine;

    @Override
    public String build(MailTemplateVo mailTemplateVo, Map<String, Object> parameter) throws Exception {
        // 模板名称
        String templateName = mailTemplateVo.getTemplateName();
        if (ToolsUtils.isEmpty(templateName)) {
            throw new RuntimeException("邮件模板路径为空。请去 sys_mail_template 表中配置 mailCode:[" + mailTemplateVo.getMailCode() + "] 的模板的 templateName");
        }
        if (parameter == null) {
            parameter = new HashMap<>();
        }
        // sql 执行结果是否是单行,默认是单行
        Boolean singleResult = mailTemplateVo.getSingleResult();
        singleResult = singleResult == null ? true : singleResult;
        // 数据来源,1-固定邮件,2-SQL查询,3-参数设置,4-混合(2、3都有)
        String dataSources = mailTemplateVo.getDataSources();
        // 单行结果集
        Map<String, Object> result = new HashMap<>();
        // 多行结果集
        List<Map<String, Object>> resultList = new ArrayList<>();
        // 模板参数
        Context context = new Context();
        switch(dataSources) {
            case // 1-固定邮件
            MailCst.SYS_FC_DATA_SS_FIXED:
                break;
            case // 2-SQL查询
            MailCst.SYS_FC_DATA_SS_SQL:
                if (!singleResult) {
                    resultList = mailTemplateService.runSQLResultList(parameter, mailTemplateVo.getRunSql());
                    context.setVariable("root", resultList);
                } else {
                    result = mailTemplateService.runSQLSingleResult(parameter, mailTemplateVo.getRunSql());
                    context.setVariables(result);
                }
                break;
            case // 3-参数设置
            MailCst.SYS_FC_DATA_SS_PRO:
                context.setVariables(parameter);
                break;
            case // 4-混合(2、3都有)
            MailCst.SYS_FC_DATA_SS_MIX:
                if (!singleResult) {
                    resultList = mailTemplateService.runSQLResultList(parameter, mailTemplateVo.getRunSql());
                    context.setVariable("root", resultList);
                } else {
                    result = mailTemplateService.runSQLSingleResult(parameter, mailTemplateVo.getRunSql());
                }
                // 合并参数,指定参数优先
                result.putAll(parameter);
                context.setVariables(result);
                break;
        }
        return templateEngine.process(templateName, context);
    }
}

19 Source : ThymeleafUtil.java
with Apache License 2.0
from WeBankFinTech

@Slf4j
public clreplaced ThymeleafUtil {

    public static final String FRONT_APLLICATION_YML = "front-application-yml.tpl";

    public static final String NODE_CONFIG_INI = "node-config-ini.tpl";

    public static final String NODE_GROUP_GENESIS = "node-group-genesis.tpl";

    public static final String NODE_GROUP_INI = "node-group-ini.tpl";

    /**
     */
    public final static TemplateEngine templateEngine = new TemplateEngine();

    static {
        final ClreplacedLoaderTemplateResolver templateResolver = new ClreplacedLoaderTemplateResolver();
        templateResolver.setOrder(1);
        templateResolver.setPrefix("/templates/node/");
        templateResolver.setTemplateMode(TemplateMode.TEXT);
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setCacheable(false);
        templateEngine.addTemplateResolver(templateResolver);
    }

    /**
     * @param tpl
     * @param varMap
     */
    public static String generate(String tpl, Map<String, Object> varMap) {
        final Context ctx = new Context(Locale.CHINA);
        ctx.setVariables(varMap);
        String fileContent = templateEngine.process(tpl, ctx);
        return fileContent;
    }

    /**
     * @param tpl
     * @param array
     */
    public static String generate(String tpl, Pair<String, Object>... array) {
        return generate(tpl, PairUtil.toMap(array));
    }

    /**
     * @param tpl
     * @param varMap
     */
    public static void write(String tpl, Writer writer, Map<String, Object> varMap) {
        final Context ctx = new Context(Locale.CHINA);
        ctx.setVariables(varMap);
        templateEngine.process(tpl, ctx, writer);
    }

    /**
     * @param tpl
     * @param array
     * @return
     */
    public static void write(String tpl, Writer writer, Pair<String, Object>... array) {
        write(tpl, writer, PairUtil.toMap(array));
    }

    /**
     * node config path: /NODES_ROOT/IP/NODE[index]/
     * @param nodeRoot
     * @param channelPort
     * @param p2pPort
     * @param jsonrpcPort
     * @param peerList
     * @param guomi
     * @param chainIdInConfigIni
     * @throws IOException
     */
    public static void newNodeConfigIni(Path nodeRoot, int channelPort, int p2pPort, int jsonrpcPort, List<TbFront> peerList, boolean guomi, int chainIdInConfigIni) throws IOException {
        log.info("newNodeConfigIni nodeRoot:{},channelPort:{}peerList:{}", nodeRoot, channelPort, peerList);
        String nodeConfigIni = ThymeleafUtil.generate(ThymeleafUtil.NODE_CONFIG_INI, Pair.of("channelPort", channelPort), Pair.of("p2pPort", p2pPort), Pair.of("jsonrpcPort", jsonrpcPort), Pair.of("nodeList", peerList), Pair.of("guomi", guomi), Pair.of("chainId", chainIdInConfigIni));
        if (Files.notExists(nodeRoot)) {
            Files.createDirectories(nodeRoot);
        }
        Files.write(nodeRoot.resolve("config.ini"), nodeConfigIni.getBytes());
    }

    /**
     * group config path: /NODES_ROOT/IP/NODE[index]/conf/
     * @param nodeRoot
     * @param groupId
     * @throws IOException
     */
    public static void newGroupConfigs(Path nodeRoot, int groupId, long timestamp, List<String> nodeIdList) throws IOException {
        String nodeConfigIni = ThymeleafUtil.generate(ThymeleafUtil.NODE_GROUP_INI);
        Files.write(nodeRoot.resolve(String.format("conf/group.%s.ini", groupId)), nodeConfigIni.getBytes());
        String nodeGenesis = ThymeleafUtil.generate(ThymeleafUtil.NODE_GROUP_GENESIS, Pair.of("groupId", groupId), Pair.of("timestamp", timestamp), Pair.of("nodeIdList", nodeIdList), Pair.of("sealerCount", CollectionUtils.size(nodeIdList)));
        Files.write(nodeRoot.resolve(String.format("conf/group.%s.genesis", groupId)), nodeGenesis.getBytes());
    }

    /**
     * /NODES_ROOT/IP/NODE[index]/application.yml
     * @param nodeRoot
     * @param encryptType
     * @param channelPort
     * @param frontPort
     * @param webaseSignAddr
     * @throws IOException
     */
    public static void newFrontConfig(Path nodeRoot, byte encryptType, int channelPort, int frontPort, String webaseSignAddr) throws IOException {
        log.info("newFrontConfig nodeRoot:{},frontPort:{}", nodeRoot, frontPort);
        String applicationYml = ThymeleafUtil.generate(ThymeleafUtil.FRONT_APLLICATION_YML, Pair.of("encryptType", encryptType), Pair.of("channelPort", channelPort), Pair.of("frontPort", frontPort), Pair.of("webaseSignAddr", webaseSignAddr));
        Files.write(nodeRoot.resolve("application.yml"), applicationYml.getBytes());
    }
}

19 Source : MailController.java
with Apache License 2.0
from WeBankFinTech

/**
 * main function is to test mail server config
 * using mailServerConfigService and mailService
 */
@Log4j2
@RestController
@RequestMapping("/alert/mail")
public clreplaced MailController {

    @Autowired
    MailService mailService;

    @Autowired
    MailServerConfigService mailServerConfigService;

    @Autowired
    TemplateEngine templateEngine;

    public static final String testreplacedle = "WeBase-Node-Manager测试邮件,请勿回复";

    /**
     * check param empty and send test mail using ReqMailServerConfigParam
     * @param toMailAddress
     * @param reqMailServerConfigParam
     * @return
     */
    @PostMapping("/test/{toMailAddress}")
    @PreAuthorize(ConstantProperties.HAS_ROLE_ADMIN)
    public Object sendTestMail(@PathVariable("toMailAddress") String toMailAddress, @RequestBody ReqMailServerConfigParam reqMailServerConfigParam) {
        Instant startTime = Instant.now();
        log.info("start sendDefaultMail. startTime:{} toMailAddress:{}", startTime.toEpochMilli(), toMailAddress);
        try {
            checkParamEmpty(reqMailServerConfigParam);
        } catch (NodeMgrException e) {
            return new BaseResponse(ConstantCode.MAIL_SERVER_CONFIG_PARAM_EMPTY);
        }
        try {
            String pwdDecoded = new String(Base64.getDecoder().decode(reqMailServerConfigParam.getPreplacedword()));
            reqMailServerConfigParam.setPreplacedword(pwdDecoded);
        } catch (Exception e) {
            log.error("decode preplacedword error:[]", e);
            return new BaseResponse(ConstantCode.PreplacedWORD_DECODE_FAIL, e.getMessage());
        }
        // get configuration from web and refresh JavaMailSender
        mailService.refreshJavaMailSenderConfigFromWeb(reqMailServerConfigParam);
        String fromMailAddress = reqMailServerConfigParam.getUsername();
        Context context = new Context();
        // add date in content
        SimpleDateFormat formatTool = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        context.setVariable("time", formatTool.format(new Date()));
        String emailFinalContent = templateEngine.process("AlertEmailForTest", context);
        try {
            mailService.sendMailBare(fromMailAddress, toMailAddress, testreplacedle, emailFinalContent);
            log.info("end sendDefaultMail. useTime:{}", Duration.between(startTime, Instant.now()).toMillis());
            return new BaseResponse(ConstantCode.SUCCESS);
        } catch (Exception e) {
            log.error("sendDefaultMail error:[]", e);
            return new BaseResponse(ConstantCode.SEND_MAIL_ERROR, e.getMessage());
        }
    }

    public void checkParamEmpty(ReqMailServerConfigParam reqMailServerConfigParam) {
        log.debug("start checkParamEmpty reqMailServerConfigParam:{}", reqMailServerConfigParam);
        if (reqMailServerConfigParam.getServerId() == null || reqMailServerConfigParam.getPort() == null || reqMailServerConfigParam.getAuthentication() == null || StringUtils.isEmpty(reqMailServerConfigParam.getHost())) {
            log.error("error checkParamEmpty reqMailServerConfigParam:{}", reqMailServerConfigParam);
            throw new NodeMgrException(ConstantCode.MAIL_SERVER_CONFIG_PARAM_EMPTY);
        }
        if (reqMailServerConfigParam.getAuthentication() == EnableStatus.ON.getValue()) {
            if (StringUtils.isEmpty(reqMailServerConfigParam.getUsername()) || StringUtils.isEmpty(reqMailServerConfigParam.getPreplacedword())) {
                log.error("error checkParamEmpty in auth reqMailServerConfigParam:{}", reqMailServerConfigParam);
                throw new NodeMgrException(ConstantCode.MAIL_SERVER_CONFIG_PARAM_EMPTY);
            }
        }
        log.debug("end checkParamEmpty reqMailServerConfigParam:{}", reqMailServerConfigParam);
    }
}

19 Source : SpringbootEmailApplicationTests.java
with Apache License 2.0
from u014427391

@SpringBootTest
clreplaced SpringbootEmailApplicationTests {

    @Autowired
    EmailService emailService;

    @Resource
    TemplateEngine templateEngine;

    @Test
    void contextLoads() {
    }

    @Test
    void testSendTextMail() {
        EmailDto emailDto = new EmailDto();
        emailDto.setSendTo("[email protected]");
        emailDto.setSubject("发送文本邮件");
        emailDto.setContent("测试发送文本邮件!");
        emailService.sendTextMail(emailDto);
    }

    @Test
    void testSendHtmlMail() throws MessagingException {
        EmailDto emailDto = new EmailDto();
        emailDto.setSendTo("[email protected]");
        emailDto.setSubject("发送html邮件");
        String html = "<html><head><replacedle>email</replacedle></head><body><h1>测试发送html邮件</h1></body></html>";
        emailDto.setContent(html);
        emailService.sendHtmlMail(emailDto);
    }

    @Test
    void testSendAttachmentMail() throws MessagingException {
        String[] filePaths = new String[] { "C:\\Users\\Administrator\\Desktop\\awrrpt_2_22022_22023.html", "C:\\Users\\Administrator\\Desktop\\awr.html" };
        EmailDto emailDto = new EmailDto();
        emailDto.setSendTo("[email protected]");
        emailDto.setSubject("发送附件邮件");
        emailDto.setFilePaths(filePaths);
        String html = "<html><head><replacedle>email</replacedle></head><body><h1>测试发送附件邮件</h1></body></html>";
        emailDto.setContent(html);
        emailService.sendAttachmentMail(emailDto);
    }

    @Test
    void testSendInLineImgMail() throws MessagingException {
        String inlineImgPath = "C:\\Users\\Administrator\\Desktop\\007Tv3Vmly1ggxvrzrytij31hc0u047h.jpg";
        String srcId = "img01";
        EmailDto emailDto = new EmailDto();
        emailDto.setSendTo("[email protected]");
        emailDto.setSubject("发送html内嵌图片邮件");
        emailDto.setInlineImgId(srcId);
        emailDto.setInlineImgPath(inlineImgPath);
        String html = "<html><head><replacedle>email</replacedle></head><body><h1>发送html内嵌图片邮件</h1>" + "<img src=\'cid:" + srcId + "\'></img>" + "</body></html>";
        emailDto.setContent(html);
        emailService.sendInLineImgMail(emailDto);
    }

    @Test
    void testSendTemplateEmail() throws MessagingException {
        Context context = new Context();
        context.setVariable("username", "admin");
        context.setVariable("id", "123456789");
        EmailDto emailDto = new EmailDto();
        emailDto.setSendTo("[email protected]");
        emailDto.setSubject("发送模板html邮件");
        emailDto.setContent(templateEngine.process("test", context));
        emailService.sendHtmlMail(emailDto);
    }
}

19 Source : EmailUtils.java
with Apache License 2.0
from tmobile

@Component
public clreplaced EmailUtils {

    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private TemplateEngine templateEngine;

    private Logger log = LogManager.getLogger(EmailUtils.clreplaced);

    public EmailUtils() {
    // TODO Auto-generated constructor stub
    }

    /**
     * To send HTML email notification
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendHtmlEmalFromTemplate(String from, List<String> to, String subject, Map<String, String> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(to.toArray(new String[to.size()]));
            helper.setSubject(subject);
            String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME;
            // inline image content identifies
            for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
                variables.put(entry.getKey(), entry.getKey());
            }
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            try {
                // add each inline image byte scream
                for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
                    helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
                }
            } catch (IOException e) {
                log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplate").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
            }
            javaMailSender.send(message);
        } catch (MessagingException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to Service account owner %s for service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        } catch (MailSendException exception) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to Service account owner %s for service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        }
    }

    /**
     * To send HTML email notification for internal certs
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendHtmlEmalFromTemplateForInternalCert(String from, String to, String subject, Map<String, String> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_CREATE_CERT;
            // inline image content identifies
            for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
                variables.put(entry.getKey(), entry.getKey());
            }
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            try {
                // add each inline image byte scream
                for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
                    helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
                }
            } catch (IOException e) {
                log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForInternalCert").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
            }
            javaMailSender.send(message);
        } catch (MessagingException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForInternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to  " + "User  %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        } catch (MailSendException exception) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForInternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to  " + "User  %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        }
    }

    /**
     * To send HTML email notification for delete
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendHtmlEmalFromTemplateForDelete(String from, String to, String subject, Map<String, String> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_DELETE_CERT;
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            try {
                // add each inline image byte scream
                for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
                    helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
                }
            } catch (IOException e) {
                log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForDelete").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
            }
            javaMailSender.send(message);
        } catch (MessagingException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForDelete").put(LogMessage.MESSAGE, String.format("Failed to send email notification to  " + "User  %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        } catch (MailSendException exception) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForDelete").put(LogMessage.MESSAGE, String.format("Failed to send email notification to  " + "User  %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        }
    }

    /**
     * To send HTML email notification for external cert(ceration and renewal)
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendEmailForExternalCert(String from, String to, String subject, Map<String, String> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_EXTERNAL_CERT;
            // inline image content identifies
            for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
                variables.put(entry.getKey(), entry.getKey());
            }
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            try {
                // add each inline image byte scream
                for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
                    helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
                }
            } catch (IOException e) {
                log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendEmailForExternalCert").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
            }
            javaMailSender.send(message);
        } catch (MessagingException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendEmailForExternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to  " + "User  %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        } catch (MailSendException exception) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendEmailForExternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to  " + "User  %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        }
    }

    /**
     * To send HTML email notification for delete
     *
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendTransferEmail(String from, Map<String, String> variables, String subject) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(variables.get("newOwnerEmail"));
            helper.setCc(variables.get("oldOwnerEmail"));
            helper.setSubject(subject);
            String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_TRANSFER;
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            javaMailSender.send(message);
        } catch (MessagingException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendTransferEmail").put(LogMessage.MESSAGE, String.format("Failed to send Transfer email notification to  " + "User  %s for certificate %s for operation = %s", variables.get("newOwnerEmail"), variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        } catch (MailSendException exception) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendTransferEmail").put(LogMessage.MESSAGE, String.format("Failed to send Transfer email notification to  " + "User  %s for certificate %s for operation = %s", variables.get("newOwnerEmail"), variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
        }
    }

    /**
     * To get byte array stream of image resources
     * @param imagePath
     * @return
     * @throws IOException
     */
    private ByteArrayResource getImageByteArray(String imagePath) throws IOException {
        ClreplacedLoader clreplacedloader = Thread.currentThread().getContextClreplacedLoader();
        InputStream is = clreplacedloader.getResourcereplacedtream(imagePath);
        BufferedImage bImage = ImageIO.read(is);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ImageIO.write(bImage, TVaultConstants.IMAGE_FORMAT_PNG, byteArrayOutputStream);
        return new ByteArrayResource(byteArrayOutputStream.toByteArray());
    }

    /**
     * To send HTML email notification
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendIAMSvcAccHtmlEmalFromTemplate(String from, List<String> to, String subject, Map<String, String> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(to.toArray(new String[to.size()]));
            helper.setSubject(subject);
            String templateFileName = IAMServiceAccountConstants.IAM_EMAIL_TEMPLATE_NAME;
            // inline image content identifies
            for (Map.Entry<String, String> entry : IAMServiceAccountConstants.IAM_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
                variables.put(entry.getKey(), entry.getKey());
            }
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            extractImageBytesFromByteArray(helper);
            javaMailSender.send(message);
        } catch (MessagingException | MailSendException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendIAMSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to IAM Service account owner %s for IAM service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
        }
    }

    /**
     * To send HTML email notification
     * @param from
     * @param to
     * @param subject
     * @param variables
     */
    public void sendAzureSvcAccHtmlEmalFromTemplate(String from, List<String> to, String subject, Map<String, String> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(from);
            helper.setTo(to.toArray(new String[to.size()]));
            helper.setSubject(subject);
            String templateFileName = AzureServiceAccountConstants.AZURE_EMAIL_TEMPLATE_NAME;
            // inline image content identifies
            for (Map.Entry<String, String> entry : AzureServiceAccountConstants.AZURE_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
                variables.put(entry.getKey(), entry.getKey());
            }
            String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
            helper.setText(content, true);
            extractImageBytesFromByteArrayAzureService(helper);
            javaMailSender.send(message);
        } catch (MessagingException | MailSendException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendAzureSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to Azure Service account owner %s for Azure service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
        }
    }

    /**
     * @param helper
     * @throws MessagingException
     */
    private void extractImageBytesFromByteArray(MimeMessageHelper helper) throws MessagingException {
        try {
            // add each inline image byte scream
            for (Map.Entry<String, String> entry : IAMServiceAccountConstants.IAM_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
                helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
            }
        } catch (IOException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendIAMSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
        }
    }

    /**
     * @param helper
     * @throws MessagingException
     */
    private void extractImageBytesFromByteArrayAzureService(MimeMessageHelper helper) throws MessagingException {
        try {
            // add each inline image byte scream
            for (Map.Entry<String, String> entry : AzureServiceAccountConstants.AZURE_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
                helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
            }
        } catch (IOException e) {
            log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendAzureSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
        }
    }
}

19 Source : WebConfig.java
with Apache License 2.0
from tmobile

@Bean
public TemplateEngine templateEngine() {
    TemplateEngine templateEngine = new TemplateEngine();
    templateEngine.setTemplateResolver(this.templateResolver());
    return templateEngine;
}

19 Source : MailContentBuilderService.java
with Apache License 2.0
from tmobile

@Service
public clreplaced MailContentBuilderService {

    private TemplateEngine templateEngine;

    @Autowired
    public MailContentBuilderService(TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }

    public String build(final String templateNameOrUrl, final Map<String, String> details) {
        return templateEngine.process(templateNameOrUrl, buildContext(details));
    }

    public String buildPlainTextMail(String mailBody, final Map<String, Object> details) {
        for (Map.Entry<String, Object> entry : details.entrySet()) {
            mailBody = mailBody.replace("${".concat(entry.getKey()).concat("}"), entry.getValue().toString());
        }
        return mailBody;
    }

    private Context buildContext(Map<String, String> details) {
        Context context = new Context();
        for (Map.Entry<String, String> entry : details.entrySet()) {
            context.setVariable(entry.getKey(), entry.getValue());
        }
        return context;
    }

    public String getRemoteMailContent(String templateUrl) throws ParseException, IOException {
        Map<String, String> headers = Maps.newHashMap();
        headers.put("Conent-Type", "text/html");
        return PacHttpUtils.getHttpGet(templateUrl, headers);
    }
}

19 Source : GoodsHtmlService.java
with Apache License 2.0
from tiancixiong

/**
 * @Author: TianCi.Xiong
 * @Description: 整合Thymeleaf静态化商品详情页
 * @Date: Created in 2019-11-12 13:46
 */
@Service
public clreplaced GoodsHtmlService {

    @Autowired
    private GoodsService goodsService;

    @Autowired
    private TemplateEngine templateEngine;

    private static final Logger logger = LoggerFactory.getLogger(GoodsHtmlService.clreplaced);

    /**
     * 创建html页面
     *
     * @param spuId
     */
    public void createHtml(Long spuId) {
        PrintWriter writer = null;
        try {
            // 获取页面数据
            Map<String, Object> spuMap = this.goodsService.loadModel(spuId);
            // 创建thymeleaf上下文对象
            Context context = new Context();
            // 把数据放入上下文对象
            context.setVariables(spuMap);
            // 创建输出流
            File file = new File("D:\\JAVA\\nginx-1.12.2\\html\\leyou\\" + spuId + ".html");
            writer = new PrintWriter(file);
            // 执行页面静态化方法
            templateEngine.process("item", context, writer);
        } catch (Exception e) {
            logger.error("页面静态化出错:{}," + e, spuId);
        } finally {
            if (writer != null) {
                writer.close();
            }
        }
    }

    /**
     * 新建线程处理页面静态化
     *
     * @param spuId
     */
    public void asyncExcute(Long spuId) {
        ThreadUtils.execute(() -> createHtml(spuId));
    /*ThreadUtils.execute(new Runnable() {
            @Override
            public void run() {
                createHtml(spuId);
            }
        });*/
    }

    /**
     * 删除页面
     *
     * @param id
     */
    public void deleteHtml(Long id) {
        File file = new File("D:\\JAVA\\nginx-1.12.2\\html\\leyou\\", id + ".html");
        file.deleteOnExit();
    }
}

19 Source : TemplateUtils.java
with Apache License 2.0
from skalogs

@Slf4j
public clreplaced TemplateUtils {

    private static TemplateUtils INSTANCE = new TemplateUtils();

    private TemplateEngine stringTemplateEngine;

    private TemplateUtils() {
        StringTemplateResolver templateResolver = new StringTemplateResolver();
        templateResolver.setTemplateMode(TemplateMode.HTML);
        // TODO Cacheable or Not ?
        templateResolver.setCacheable(false);
        stringTemplateEngine = new TemplateEngine();
        stringTemplateEngine.addTemplateResolver(templateResolver);
    }

    public static TemplateUtils getInstance() {
        return INSTANCE;
    }

    public String process(String template, JsonNode value) {
        final Context ctx = new Context();
        List<String> fields = getVariables(template);
        for (String field : fields) {
            if (value.get(field) != null)
                ctx.setVariable(field, value.get(field).asText());
            else
                ctx.setVariable(field, "[empty]");
        }
        return stringTemplateEngine.process(template, ctx);
    }

    public String process(String template, Map values) {
        final Context ctx = new Context();
        List<String> fields = getVariables(template);
        for (String field : fields) {
            if (values.get(field) != null)
                ctx.setVariable(field, values.get(field).toString());
            else
                ctx.setVariable(field, "[empty]");
        }
        return stringTemplateEngine.process(template, ctx);
    }

    private List<String> getVariables(String template) {
        // TODO Improve the Grok Pattern to 'forget' the delimiters within the matches (and next remove the substring calls)
        final Matcher matcher = Pattern.compile("(\\$\\{(?:.)+?})").matcher(template);
        List<String> fields = new ArrayList<>();
        while (matcher.find()) {
            String var = matcher.group(1);
            fields.add(var.substring(2, var.length() - 1));
        }
        return fields;
    }
}

19 Source : MailServiceTest.java
with MIT License
from rstyro

/**
 * @author tyro
 */
@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced MailServiceTest {

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;

    @Test
    public void testSimpleMail() throws Exception {
        mailService.sendSimpleMail("[email protected]", "test simple mail", " hello this is simple mail");
    }

    @Test
    public void testHtmlMail() throws Exception {
        String content = "<html>\n" + "<body>\n" + "    <h3>hello world ! 这是一封html邮件!</h3>\n" + "</body>\n" + "</html>";
        mailService.sendHtmlMail("[email protected]", "test simple mail", content);
    }

    @Test
    public void sendAttachmentsMail() {
        String filePath = "E:\\lrs\\github\\SSM\\README.txt";
        mailService.sendAttachmentsMail("[email protected]", "主题:带附件的邮件", "有附件,请查收!", filePath);
    }

    @Test
    public void sendInlineResourceMail() {
        String rscId = "id001";
        String content = "<html><body>这是有图片的邮件:<img src=\"cid:" + rscId + "\" ></body></html>";
        String imgPath = "E:\\lrs\\pic\\logo.jpg";
        mailService.sendInlineResourceMail("[email protected]", "主题:这是有图片的邮件", content, imgPath, rscId);
    }

    @Test
    public void sendTemplateMail() {
        // 创建邮件正文
        Context context = new Context();
        context.setVariable("id", "168");
        String emailContent = templateEngine.process("emailTemplate", context);
        mailService.sendHtmlMail("[email protected]", "主题:这是模板邮件", emailContent);
    }
}

19 Source : MailServiceImplTest.java
with MIT License
from rexlin600

@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced MailServiceImplTest {

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;

    @Test
    public void sendSimpleMail() {
        mailService.sendSimpleMail("[email protected]", "Simple-Mail", "This is a Simple Mail, Just for Test");
    }

    @Test
    public void sendHtmlMail() {
        // html content
        String content = "<html>\n" + "<body>\n" + "    <h3>Hi, This is a Html Mail, Just for Test</h3>\n" + "</body>\n" + "</html>";
        mailService.sendSimpleMail("[email protected]", "Html-Mail", content);
    }

    @Test
    public void sendAttachmentsMail() {
        String filePath = "E:\\Git_Workspace\\springboot2-example\\README.md";
        mailService.sendAttachmentsMail("[email protected]", "Attachments-Mail", "This is a Attachments Mail, Just for Test", filePath);
    }

    @Test
    public void sendInlineResourceMail() {
        String rscId = UUID.randomUUID().toString().replace("-", "");
        String content = "<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
        String imgPath = "C:\\Users\\hekunlin\\Pictures\\golang.jpg";
        mailService.sendInlineResourceMail("[email protected]", "InlineResource-Mail", content, imgPath, rscId);
    }

    @Test
    public void sendTemplateMail() {
        // 创建邮件正文
        Context context = new Context();
        context.setVariable("id", UUID.randomUUID().toString().replace("-", ""));
        String emailContent = templateEngine.process("testTemplate", context);
        mailService.sendHtmlMail("[email protected]", "Template-Mail", emailContent);
    }
}

19 Source : MailServiceTest.java
with MIT License
from qufei1993

@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced MailServiceTest {

    @Autowired
    private MailService mailService;

    @Resource
    TemplateEngine templateEngine;

    String to = "[email protected]";

    @Test
    public void sendTextEmailTest() {
        mailService.sendTextMail(to, "发送文本邮件", "hello,这是Spring Boot发送的一封文本邮件!");
    }

    @Test
    public void sendHtmlEmailTest() throws MessagingException {
        String content = "<html>" + "<body>" + "<h1 style=\"" + "color:red;" + "\">hello,这是Spring Boot发送的一封HTML邮件</h1>" + "</body></html>";
        mailService.sendHtmlMail(to, "发送HTML邮件", content);
    }

    @Test
    public void sendAttachmentEmailTest() throws MessagingException {
        String[] filePathList = new String[2];
        filePathList[0] = "/Users/qufei/Doreplacedents/study/SpringBoot-WebApi/chapter4.zip";
        filePathList[1] = "/Users/qufei/Doreplacedents/study/SpringBoot-WebApi/chapter5.zip";
        mailService.sendAttachmentMail(to, "发送附件邮件", "hello,这是Spring Boot发送的一封附件邮件!", filePathList);
    }

    @Test
    public void sendHtmlInlinePhotoMailTest() throws MessagingException {
        String srcPath = "/Users/qufei/Doreplacedents/study/SpringBoot-WebApi/chapter6/img/pic18.jpg";
        String srcId = "pic18";
        String content = "<html>" + "<body>" + "<h2>hello,这是Spring Boot发送的一封HTML内嵌图片的邮件</h2>" + "<img src=\'cid:" + srcId + "\'></img>" + "</body></html>";
        mailService.sendHtmlInlinePhotoMail(to, "发送图片邮件", content, srcPath, srcId);
    }

    @Test
    public void testTemplateEmailTest() throws MessagingException {
        Context context = new Context();
        context.setVariable("username", "张三");
        context.setVariable("id", "2667395");
        String emailContent = templateEngine.process("emailTemplate", context);
        mailService.sendHtmlMail(to, "发送模板邮件", emailContent);
    }
}

19 Source : EmailUtil.java
with GNU General Public License v3.0
from Programming-With-Love

/**
 * @author danbai
 * @date 2019-10-29 16:26
 */
@Component
public clreplaced EmailUtil {

    @Value("${dbys.mail-sender}")
    private String sender;

    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private TemplateEngine templateEngine;

    /**
     * 发信模版
     * @param receiver
     * @param subject
     * @param emailTemplate
     * @param dataMap
     * @throws Exception
     */
    public void sendTemplateMail(String receiver, String subject, String emailTemplate, Map<String, Object> dataMap) throws Exception {
        Context context = new Context();
        for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
            context.setVariable(entry.getKey(), entry.getValue());
        }
        String templateContent = templateEngine.process(emailTemplate, context);
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(sender);
        helper.setTo(receiver);
        helper.setSubject(subject);
        helper.setText(templateContent, true);
        javaMailSender.send(message);
    }
}

19 Source : HTMLReportWriter.java
with Apache License 2.0
from otto-de

public clreplaced HTMLReportWriter {

    private FileService fileService;

    ClreplacedLoaderTemplateResolver templateResolver = new ClreplacedLoaderTemplateResolver();

    TemplateEngine templateEngine = new TemplateEngine();

    public HTMLReportWriter(FileService fileService) {
        this.fileService = fileService;
        templateResolver.setTemplateMode("HTML");
        templateResolver.setPrefix("templates/");
        templateResolver.setSuffix(".html");
        templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
    }

    public void writeReport(Report report) throws FileNotFoundException {
        fileService.writeHtmlReport(renderReport("report", report.config, report.getFlatResultList()));
    // fileService.writeHtmlReport(renderReport("report_wip", report.getFlatResultList()), "report_new.html");
    }

    public void writeNotFinishedReport(RunStepConfig runStepConfig, JobConfig jobConfig) throws FileNotFoundException {
        fileService.writeHtmlReport(renderNotFinishedReport("report_not_finished", runStepConfig, jobConfig));
    }

    String renderReport(String template, JobConfig config, List<ScreenshotComparisonResult> screenshotComparisonResults) {
        final Map<String, Object> variables = prepareVariablesForReportTemplate(screenshotComparisonResults);
        variables.put("config", config);
        return templateEngine.process(template, new Context(Locale.US, variables));
    }

    String renderNotFinishedReport(String template, RunStepConfig runStepConfig, JobConfig config) {
        Map<String, Object> variables = new HashMap<>();
        enrichVariables(variables);
        variables.put("config", config);
        variables.put("report_dir", runStepConfig.getReportDirectory());
        variables.put("working_dir", runStepConfig.getWorkingDirectory());
        return templateEngine.process(template, new Context(Locale.US, variables));
    }

    private Map<String, Object> prepareVariablesForReportTemplate(final List<ScreenshotComparisonResult> screenshotComparisonResults) {
        Map<String, Object> variables = new HashMap<>();
        List<ScreenshotComparisonResultContext> screenshotComparisonResultContexts = new LinkedList<>();
        int lastContextKey = 0;
        ScreenshotComparisonResultContext currentContext = null;
        for (ScreenshotComparisonResult screenshotComparisonResult : screenshotComparisonResults) {
            int context = getContextHash(screenshotComparisonResult);
            if (context != lastContextKey) {
                lastContextKey = context;
                currentContext = new ScreenshotComparisonResultContext(screenshotComparisonResult.contextHash);
                screenshotComparisonResultContexts.add(currentContext);
            }
            currentContext.addResult(screenshotComparisonResult);
        }
        variables.put("resultContexts", screenshotComparisonResultContexts);
        enrichVariables(variables);
        return variables;
    }

    private void enrichVariables(Map<String, Object> variables) {
        variables.put("jlineup_version", Utils.readVersion());
        variables.put("jlineup_commit", Utils.readCommit());
        variables.put("legend_same_rgb", "#" + Integer.toHexString(ImageService.SAME_COLOR).substring(2));
        variables.put("legend_look_same_rgb", "#" + Integer.toHexString(ImageService.LOOK_SAME_COLOR).substring(2));
        variables.put("legend_anti_alias_rgb", "#" + Integer.toHexString(ImageService.ANTI_ALIAS_DETECTED_COLOR).substring(2));
        variables.put("legend_different_rgb", "#" + Integer.toHexString(ImageService.HIGHLIGHT_COLOR).substring(2));
        variables.put("legend_different_size_rgb", "#" + Integer.toHexString(ImageService.DIFFERENT_SIZE_COLOR).substring(2));
    }

    private int getContextHash(final ScreenshotComparisonResult screenshotComparisonResult) {
        return screenshotComparisonResult.contextHash;
    }

    private clreplaced ScreenshotComparisonResultContext {

        private final List<ScreenshotComparisonResult> results;

        private final ScreenshotContext screenshotContext;

        private final int contextHash;

        private final Map<Step, String> browsers;

        ScreenshotComparisonResultContext(final int contextHash) {
            this.results = new LinkedList<>();
            this.screenshotContext = fileService.getRecordedContext(contextHash);
            this.contextHash = contextHash;
            this.browsers = fileService.getBrowsers();
        }

        void addResult(ScreenshotComparisonResult result) {
            results.add(result);
        }

        @UsedInTemplate
        public int getContextHash() {
            return contextHash;
        }

        @UsedInTemplate
        public String getUrl() {
            return BrowserUtils.buildUrl(screenshotContext.url, screenshotContext.urlSubPath, Collections.emptyMap());
        }

        @UsedInTemplate
        public int getWidth() {
            return screenshotContext.deviceConfig.width;
        }

        @UsedInTemplate
        public String getBrowser(String step) {
            return browsers.get(Step.valueOf(step));
        }

        @UsedInTemplate
        public String getDeviceInfo() {
            StringBuilder sb = new StringBuilder();
            DeviceConfig dc = screenshotContext.deviceConfig;
            if (dc.isMobile()) {
                sb.append(dc.deviceName);
            }
            if (dc.isGenericMobile()) {
                sb.append("\n");
            }
            if (dc.isGenericMobile() || dc.isDesktop()) {
                sb.append("Size: ");
                sb.append(dc.width);
                sb.append("x");
                sb.append(dc.height);
                if (dc.pixelRatio != 1.0f) {
                    sb.append("\nPixel ratio: ");
                    sb.append(dc.pixelRatio);
                }
                if (dc.userAgent != null) {
                    sb.append("\n");
                    sb.append(dc.userAgent);
                }
                if (dc.isDesktop() && dc.touch) {
                    sb.append("\n");
                    sb.append("Touch enabled");
                }
            }
            return sb.toString();
        }

        @UsedInTemplate
        public List<ScreenshotComparisonResult> getResults() {
            return results;
        }

        @UsedInTemplate
        public String getShortenedUrl() {
            String shortenedUrl = getUrl();
            if (shortenedUrl.length() > 25) {
                shortenedUrl = "..." + shortenedUrl.substring(shortenedUrl.lastIndexOf("/"), shortenedUrl.length());
            }
            return shortenedUrl;
        }

        @UsedInTemplate
        public boolean isSuccess() {
            for (ScreenshotComparisonResult result : results) {
                if (result.difference > 0)
                    return false;
            }
            return true;
        }
    }
}

19 Source : ThymeleafView.java
with Apache License 2.0
from nutzam

public clreplaced ThymeleafView extends AbstractPathView {

    private static final Log log = Logs.get();

    protected TemplateEngine templateEngine;

    protected String contentType;

    protected String encoding;

    public ThymeleafView(TemplateEngine templateEngine, String path, String contentType, String encoding) {
        super(path);
        this.templateEngine = templateEngine;
        this.contentType = contentType;
        this.encoding = encoding;
    }

    @Override
    public void render(HttpServletRequest request, HttpServletResponse response, Object value) throws Exception {
        String path = evalPath(request, value);
        response.setContentType(contentType);
        response.setCharacterEncoding(encoding);
        try {
            Context ctx = createContext(request, value);
            WebContext context = new WebContext(request, response, Mvcs.getServletContext(), Locale.getDefault(), ctx.getInnerMap());
            templateEngine.process(path, context, response.getWriter());
        } catch (Exception e) {
            log.error("模板引擎错误", e);
            throw e;
        }
    }
}

19 Source : ThymeleafRender.java
with Apache License 2.0
from noear

public clreplaced ThymeleafRender implements Render {

    private static ThymeleafRender _global;

    public static ThymeleafRender global() {
        if (_global == null) {
            _global = new ThymeleafRender();
        }
        return _global;
    }

    private TemplateEngine _engine = new TemplateEngine();

    private Map<String, Object> _sharedVariable = new HashMap<>();

    private String _baseUri = "/WEB-INF/view/";

    public ThymeleafRender() {
        String baseUri = Solon.cfg().get("slon.mvc.view.prefix");
        if (Utils.isEmpty(baseUri) == false) {
            _baseUri = baseUri;
        }
        if (Solon.cfg().isDebugMode()) {
            forDebug();
        } else {
            forRelease();
        }
        try {
            Solon.global().shared().forEach((k, v) -> {
                setSharedVariable(k, v);
            });
        } catch (Exception ex) {
            EventBus.push(ex);
        }
        Solon.global().onSharedAdd((k, v) -> {
            setSharedVariable(k, v);
        });
    }

    private void forDebug() {
        String dirroot = Utils.getResource("/").toString().replace("target/clreplacedes/", "");
        File dir = null;
        if (dirroot.startsWith("file:")) {
            String dir_str = dirroot + "src/main/resources" + _baseUri;
            dir = new File(URI.create(dir_str));
            if (!dir.exists()) {
                dir_str = dirroot + "src/main/webapp" + _baseUri;
                dir = new File(URI.create(dir_str));
            }
        }
        try {
            if (dir != null && dir.exists()) {
                FileTemplateResolver _loader = new FileTemplateResolver();
                _loader.setPrefix(dir.getAbsolutePath() + File.separatorChar);
                _loader.setTemplateMode(TemplateMode.HTML);
                // 必须为false
                _loader.setCacheable(false);
                _loader.setCharacterEncoding("utf-8");
                _loader.setCacheTTLMs(Long.valueOf(3600000L));
                _engine.setTemplateResolver(_loader);
            } else {
                // 如果没有找到文件,则使用发行模式
                // 
                forRelease();
            }
        } catch (Exception ex) {
            EventBus.push(ex);
        }
    }

    private void forRelease() {
        ClreplacedLoaderTemplateResolver _loader = new ClreplacedLoaderTemplateResolver(JarClreplacedLoader.global());
        _loader.setPrefix(_baseUri);
        _loader.setTemplateMode(TemplateMode.HTML);
        _loader.setCacheable(true);
        _loader.setCharacterEncoding("utf-8");
        _loader.setCacheTTLMs(Long.valueOf(3600000L));
        _engine.setTemplateResolver(_loader);
    }

    public void setSharedVariable(String name, Object obj) {
        _sharedVariable.put(name, obj);
    }

    @Override
    public void render(Object obj, Context ctx) throws Throwable {
        if (obj == null) {
            return;
        }
        if (obj instanceof ModelAndView) {
            render_mav((ModelAndView) obj, ctx, () -> ctx.outputStream());
        } else {
            ctx.output(obj.toString());
        }
    }

    @Override
    public String renderAndReturn(Object obj, Context ctx) throws Throwable {
        if (obj == null) {
            return null;
        }
        if (obj instanceof ModelAndView) {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            render_mav((ModelAndView) obj, ctx, () -> outputStream);
            return outputStream.toString();
        } else {
            return obj.toString();
        }
    }

    public void render_mav(ModelAndView mv, Context ctx, SupplierEx<OutputStream> outputStream) throws Throwable {
        if (ctx.contentTypeNew() == null) {
            ctx.contentType("text/html;charset=utf-8");
        }
        if (XPluginImp.output_meta) {
            ctx.headerSet("solon.view", "ThymeleafRender");
        }
        org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
        context.setVariables(_sharedVariable);
        context.setVariables(mv);
        PrintWriter writer = new PrintWriter(outputStream.get());
        _engine.process(mv.view(), context, writer);
        writer.flush();
    }
}

19 Source : MailService.java
with MIT License
from moonlightL

@Component
@EnableConfigurationProperties(MailProperties.clreplaced)
@Slf4j
public clreplaced MailService {

    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private MailProperties mailProperties;

    @Autowired
    private TemplateEngine templateEngine;

    @Autowired
    private CommonMap commonMap;

    @Async
    public void sendEmail(String toEmail, String subject, String content) throws Exception {
        Context con = new Context();
        con.setVariable("content", content);
        String emailtext = templateEngine.process("portal/mail.html", con);
        MimeMessage message = this.javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
        InternetAddress from = new InternetAddress();
        from.setAddress(this.mailProperties.getUsername());
        from.setPersonal(commonMap.get("blogName").toString(), "UTF-8");
        helper.setFrom(from);
        helper.setTo(toEmail);
        helper.setSubject(subject);
        helper.setText(emailtext, true);
        this.javaMailSender.send(message);
        log.info("发送邮件内容:{}", content);
    }
}

19 Source : EmailService.java
with MIT License
from moonlightL

/**
 * @Author: MoonlightL
 * @ClreplacedName: EmailService
 * @ProjectName: hexo-boot
 * @Description: 邮件相关
 * @DateTime: 2020/10/1 11:14 上午
 */
@Component
@Slf4j
public clreplaced EmailService {

    @Autowired
    private TemplateEngine templateEngine;

    @Autowired
    private ConfigService configService;

    @Async
    public void sendEmail(String toEmail, String subject, String content) {
        if (StringUtils.isBlank(toEmail)) {
            return;
        }
        String email = this.configService.getConfigValue(ConfigEnum.EMAIL.getName());
        if (StringUtils.isBlank(email)) {
            log.info("======== sendEmail 邮箱地址未配置 =========");
            return;
        }
        String emailHost = this.configService.getConfigValue(ConfigEnum.EMAIL_HOST.getName());
        String username = this.configService.getConfigValue(ConfigEnum.EMAIL_USERNAME.getName());
        String preplacedword = this.configService.getConfigValue(ConfigEnum.EMAIL_PreplacedWORD.getName());
        if (StringUtils.isBlank(emailHost) || StringUtils.isBlank(username) || StringUtils.isBlank(preplacedword)) {
            log.info("======== sendEmail 发送邮件服务器/用户名/密码未配置 =========");
            return;
        }
        try {
            JavaMailSender sender = this.getSender(emailHost, username, preplacedword);
            Context con = new Context();
            con.setVariable("content", content);
            String emailTemplate = templateEngine.process("admin/email.html", con);
            MimeMessage message = sender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
            helper.setFrom(email, this.configService.getConfigValue(ConfigEnum.BLOG_NAME.getName()));
            helper.setTo(toEmail);
            helper.setSubject(subject);
            helper.setText(emailTemplate, true);
            sender.send(message);
            log.info("发送邮件内容: {}", content);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("发送邮件失败: {}", e.getMessage());
        }
    }

    private JavaMailSender getSender(String host, String username, String preplacedword) {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(host);
        sender.setUsername(username);
        sender.setPreplacedword(preplacedword);
        sender.setDefaultEncoding("Utf-8");
        Properties prop = new Properties();
        prop.setProperty("mail.smtp.auth", "true");
        prop.setProperty("mail.smtp.starttls.enable", "true");
        prop.setProperty("mail.smtp.starttls.required", "true");
        prop.setProperty("mail.smtp.port", "465");
        prop.setProperty("mail.smtp.socketFactory.port", "465");
        prop.setProperty("mail.smtp.socketFactory.fallback", "false");
        prop.setProperty("mail.smtp.socketFactory.clreplaced", "javax.net.ssl.SSLSocketFactory");
        sender.setJavaMailProperties(prop);
        return sender;
    }
}

19 Source : ThymeleafViewsRenderer.java
with Apache License 2.0
from micronaut-projects

private TemplateEngine initializeTemplateEngine() {
    TemplateEngine engine = new TemplateEngine();
    engine.setTemplateResolver(templateResolver);
    return engine;
}

19 Source : GaeInfoServlet.java
with Apache License 2.0
from ludoch

@SuppressWarnings({ "serial" })
@WebServlet(name = "GAEInfo", description = "GAEInfo: Write info about GAE Standard", urlPatterns = "/")
public clreplaced GaeInfoServlet extends HttpServlet {

    private final String[] metaPath = { "/computeMetadata/v1/project/numeric-project-id", "/computeMetadata/v1/project/project-id", "/computeMetadata/v1/instance/zone", "/computeMetadata/v1/instance/service-accounts/default/aliases", "/computeMetadata/v1/instance/service-accounts/default/", // Tokens work - but are a security risk to display
    "/computeMetadata/v1/instance/service-accounts/default/scopes" // "/computeMetadata/v1/instance/service-accounts/default/token"
    };

    final String[] metaServiceAcct = { "/computeMetadata/v1/instance/service-accounts/{account}/aliases", "/computeMetadata/v1/instance/service-accounts/{account}/email", // Tokens work - but are a security risk to display
    "/computeMetadata/v1/instance/service-accounts/{account}/scopes" // "/computeMetadata/v1/instance/service-accounts/{account}/token"
    };

    private final String metadata = "http://metadata.google.internal";

    private TemplateEngine templateEngine;

    // Use OkHttp from Square as it's quite easy to use for simple fetches.
    private final OkHttpClient ok = new OkHttpClient.Builder().readTimeout(500, // Don't dawdle
    TimeUnit.MILLISECONDS).writeTimeout(500, TimeUnit.MILLISECONDS).build();

    // Setup to pretty print returned json
    private final Gson gson = new GsonBuilder().setPrettyPrinting().create();

    private final JsonParser jp = new JsonParser();

    // Fetch Metadata
    String fetchMetadata(String key) throws IOException {
        Request request = new Request.Builder().url(metadata + key).addHeader("Metadata-Flavor", "Google").get().build();
        Response response = ok.newCall(request).execute();
        return response.body().string();
    }

    String fetchJsonMetadata(String prefix) throws IOException {
        Request request = new Request.Builder().url(metadata + prefix).addHeader("Metadata-Flavor", "Google").get().build();
        Response response = ok.newCall(request).execute();
        // Convert json to prety json
        return gson.toJson(jp.parse(response.body().string()));
    }

    @Override
    public void init() {
        // Setup ThymeLeaf
        ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(this.getServletContext());
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        // TTL=20m
        templateResolver.setCacheTTLMs(1200000L);
        // Cache is set to true by default. Set to false if you want templates to
        // be automatically updated when modified.
        templateResolver.setCacheable(true);
        templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
    }

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String key;
        WebContext ctx = new WebContext(req, resp, getServletContext(), req.getLocale());
        resp.setContentType("text/html");
        TreeMap<String, String> m = new TreeMap<>();
        for (Enumeration<String> e = req.getHeaderNames(); e.hasMoreElements(); ) {
            key = e.nextElement();
            m.put(key, req.getHeader(key));
        }
        ctx.setVariable("headers", m);
        Cookie[] cookies = req.getCookies();
        m = new TreeMap<>();
        if (cookies != null && cookies.length != 0) {
            for (Cookie co : cookies) {
                m.put(co.getName(), co.getValue());
            }
        }
        ctx.setVariable("cookies", m);
        Properties properties = System.getProperties();
        m = new TreeMap<>();
        for (Enumeration e = properties.propertyNames(); e.hasMoreElements(); ) {
            key = (String) e.nextElement();
            m.put(key, (String) properties.get(key));
        }
        ctx.setVariable("systemprops", m);
        Map<String, String> envVar = System.getenv();
        m = new TreeMap<>(envVar);
        ctx.setVariable("envvar", m);
        // The metadata server is only on a production system
        m = new TreeMap<>();
        for (String k : metaPath) {
            m.put(k, fetchMetadata(k));
        }
        ctx.setVariable("Metadata", m.descendingMap());
        ctx.setVariable("sam", m.descendingMap());
        // Recursivly get all info about service accounts -- Note tokens are leftout by default.
        ctx.setVariable("rsa", fetchJsonMetadata("/computeMetadata/v1/instance/service-accounts/?recursive=true"));
        // Recursivly get all data on Metadata server.
        ctx.setVariable("ram", fetchJsonMetadata("/?recursive=true"));
        templateEngine.process("index", ctx, resp.getWriter());
    }
}

19 Source : TextTemplateEngine.java
with Apache License 2.0
from labsai

@Getter
@Setter
@AllArgsConstructor
public clreplaced TextTemplateEngine {

    private TemplateEngine templateEngine;
}

19 Source : JavaScriptTemplateEngine.java
with Apache License 2.0
from labsai

@Getter
@Setter
@AllArgsConstructor
public clreplaced JavaScriptTemplateEngine {

    private TemplateEngine templateEngine;
}

19 Source : HtmlTemplateEngine.java
with Apache License 2.0
from labsai

@Getter
@Setter
@AllArgsConstructor
public clreplaced HtmlTemplateEngine {

    private TemplateEngine templateEngine;
}

19 Source : ThymeleafTemplateDelegate.java
with Apache License 2.0
from koocyton

@Override
public String template(Object handleObject, ModelMap modelMap, String templateName) {
    String controllerName = handleObject.getClreplaced().getSimpleName();
    String templateDirectory = controllerName.toLowerCase().substring(0, controllerName.length() - "handle".length());
    templateResolver.setPrefix(this.getClreplaced().getResource("/template/" + templateDirectory).getPath() + "/");
    TemplateEngine engine = new TemplateEngine();
    engine.setTemplateResolver(templateResolver);
    Context context = new Context();
    context.setVariables(modelMap);
    return engine.process(templateName, context);
}

19 Source : MailServiceTest.java
with MIT License
from jiangsongHB

/**
 * <p>
 * 邮件测试
 * </p>
 *
 * @package: com.xkcoding.email.service
 * @description: 邮件测试
 * @author: yangkai.shen
 * @date: Created in 2018/11/21 13:49
 * @copyright: Copyright (c) 2018
 * @version: V1.0
 * @modified: yangkai.shen
 */
public clreplaced MailServiceTest extends SpringBootDemoEmailApplicationTests {

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;

    /**
     * 测试简单邮件
     */
    @Test
    public void sendSimpleMail() {
        mailService.sendSimpleMail("[email protected]", "这是一封简单邮件", "这是一封普通的SpringBoot测试邮件");
    }

    /**
     * 测试HTML邮件
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendHtmlMail() throws MessagingException {
        Context context = new Context();
        context.setVariable("project", "Spring Boot Demo");
        context.setVariable("author", "Yangkai.Shen");
        context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
        String emailTemplate = templateEngine.process("welcome", context);
        mailService.sendHtmlMail("[email protected]", "这是一封模板HTML邮件", emailTemplate);
    }

    /**
     * 测试附件邮件
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendAttachmentsMail() throws MessagingException {
        URL resource = ResourceUtil.getResource("static/xkcoding.png");
        mailService.sendAttachmentsMail("[email protected]", "这是一封带附件的邮件", "邮件中有附件,请注意查收!", resource.getPath());
    }

    /**
     * 测试静态资源邮件
     *
     * @throws MessagingException 邮件异常
     */
    @Test
    public void sendResourceMail() throws MessagingException {
        String rscId = "xkcoding";
        String content = "<html><body>这是带静态资源的邮件<br/><img src=\'cid:" + rscId + "\' ></body></html>";
        URL resource = ResourceUtil.getResource("static/xkcoding.png");
        mailService.sendResourceMail("[email protected]", "这是一封带静态资源的邮件", content, resource.getPath(), rscId);
    }
}

19 Source : WordUtil.java
with BSD 3-Clause "New" or "Revised" License
from hxnlyw

/**
 * word下载到特定位置
 *
 * @param templateEngine   配置
 * @param templateName 模板名称
 * @param variables     模板参数集
 * @param filePath     下载文件路径
 */
public static void save(TemplateEngine templateEngine, String templateName, Map<String, Object> variables, String filePath) {
    File file = new File(filePath);
    try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
        generateDoc(templateEngine, templateName, outputStream, variables);
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }
}

19 Source : PdfUtil.java
with BSD 3-Clause "New" or "Revised" License
from hxnlyw

/**
 * pdf下载到特定位置
 *
 * @param templateEngine   配置
 * @param templateName 模板名称
 * @param listVars     模板参数集
 * @param filePath     下载文件路径
 */
public static void save(TemplateEngine templateEngine, String templateName, List<Map<String, Object>> listVars, String filePath) {
    try (OutputStream out = new FileOutputStream(filePath)) {
        generateAll(templateEngine, templateName, out, listVars);
        out.flush();
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }
}

19 Source : SpringbootMailApplication.java
with MIT License
from huanzi-qch

@RestController
@SpringBootApplication
public clreplaced SpringbootMailApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMailApplication.clreplaced, args);
    }

    @Autowired
    private SpringBootMailService springBootMailService;

    @Autowired
    private TemplateEngine templateEngine;

    @GetMapping("/")
    public String index() throws MessagingException {
        // 简单邮件
        springBootMailService.sendSimpleMail("[email protected]", "Simple Mail", "第一封简单邮件");
        // HTML格式邮件
        Context context = new Context();
        context.setVariable("username", "我的小号");
        springBootMailService.sendHtmlMail("[email protected]", "HTML Mail", templateEngine.process("mail/mail", context));
        // HTML格式邮件,带附件
        Context context2 = new Context();
        context2.setVariable("username", "我的小号(带附件)");
        ArrayList<File> files = new ArrayList<>();
        // File对象
        files.add(new File("C:\\Users\\Administrator\\Desktop\\上传测试.txt"));
        files.add(new File("C:\\Users\\Administrator\\Desktop\\上传测试2.txt"));
        springBootMailService.sendAttachmentsMail("[email protected]", "Attachments Mail", templateEngine.process("mail/attachment", context2), files);
        return "欢迎访问 springboot-mail,邮件发送成功!";
    }
}

19 Source : TestControllerTest.java
with GNU General Public License v3.0
from hope-for

@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced TestControllerTest {

    @Autowired
    private EmailService emailService;

    @Autowired
    private TemplateEngine templateEngine;

    @Test
    public void test1() {
        // for(int i=0;i<=2;i++){
        emailService.sendTextEmail("[email protected]", "测试", "收到请回复,over!");
    // }
    }

    @Test
    public void test2() {
        String content = "<html>\n" + "<body>\n" + "    <h3>hello world ! 这是一封html邮件!</h3>\n" + "</body>\n" + "</html>";
        emailService.sendHtmlEmali("[email protected]", "测试", content);
    }

    @Test
    public void test3() {
        emailService.sendAttachmentsEmail("[email protected]", "测试", "收到请回复,over!", "C:\\Users\\ad182\\Pictures\\image3\\a.jpg");
    }

    @Test
    public void test4() {
        String rscId = "neo006";
        String content = "<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
        String imgPath = "C:\\Users\\ad182\\Pictures\\image3\\a.jpg";
        emailService.sendStaticResourcesEmail("[email protected]", "测试", content, imgPath, rscId);
    }

    @Test
    public void test5() {
        // 创建邮件正文
        org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
        context.setVariable("id", "006");
        String emailContent = templateEngine.process("emailTemplate", context);
        emailService.sendHtmlEmali("[email protected]", "主题:这是模板邮件", emailContent);
    }
}

19 Source : WordprocessingMLThymeleafTemplate.java
with Apache License 2.0
from hiwepy

public void setEngine(TemplateEngine engine) {
    this.engine = engine;
}

19 Source : EmailUtils.java
with MIT License
from gzmuSoft

/**
 * @author replacedoul
 * @version 1.0
 * @date 2019-05-21 14:45
 */
@Component
@Async
@Slf4j
public clreplaced EmailUtils {

    private final JavaMailSender javaMailSender;

    private final EmailConfig emailConfig;

    private final TemplateEngine templateEngine;

    public EmailUtils(JavaMailSender javaMailSender, EmailConfig emailConfig, TemplateEngine templateEngine) {
        this.javaMailSender = javaMailSender;
        this.emailConfig = emailConfig;
        this.templateEngine = templateEngine;
    }

    /**
     * 简单文字邮件发送
     *
     * @param toEmail 接收者邮箱
     * @param subject 邮件主题
     * @param content 邮件内容
     */
    public void sendSimpleMail(String toEmail, String subject, String content) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(emailConfig.getUsername());
        message.setTo(toEmail);
        message.setSubject(subject);
        message.setText(content);
        javaMailSender.send(message);
    }

    /**
     * 发送带模板的邮件
     *
     * @param toEmail   接收者邮箱
     * @param type      邮件类型
     * @param subject   邮件主题
     * @param template  邮件模板名称(默认资源路径下)
     * @param variables 模板内变量集合
     */
    public Future<String> sendTemplateMail(String toEmail, String type, String subject, String template, Map<String, Object> variables) {
        MimeMessage message = javaMailSender.createMimeMessage();
        Context context = new Context();
        variables.forEach(context::setVariable);
        context.setVariable("type", type);
        String content = templateEngine.process(template, context);
        try {
            MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
            messageHelper.setFrom(emailConfig.getUsername());
            messageHelper.setTo(toEmail);
            messageHelper.setSubject(subject);
            messageHelper.setText(content, true);
            javaMailSender.send(message);
            log.debug("向 {} 发送 {} 邮件成功", toEmail, type);
            return new AsyncResult<>("邮件发送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
            log.warn("向 {} 发送 {} 邮件失败", toEmail, type);
            return new AsyncResult<>("邮件发送失败");
        }
    }
}

19 Source : TemplateResolver.java
with Apache License 2.0
from gravitee-io

/**
 * @author David BRreplacedELY (david.brreplacedely at graviteesource.com)
 * @author replacedouan COMPIEGNE (replacedouan.compiegne at graviteesource.com)
 * @author GraviteeSource Team
 */
public clreplaced TemplateResolver extends AbstractConfigurableTemplateResolver {

    private ConcurrentMap<String, StringTemplateResource> templates = new ConcurrentHashMap<>();

    private ITemplateResolver defaultTemplateResolver = defaultTemplateResolver();

    private TemplateEngine templateEngine;

    @Override
    protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) {
        if (templates.containsKey(template)) {
            return templates.get(template);
        }
        String fallbackTemplate = template.replaceFirst(".*#", "");
        return defaultTemplateResolver.resolveTemplate(configuration, ownerTemplate, fallbackTemplate, templateResolutionAttributes).getTemplateResource();
    }

    public void addForm(Form form) {
        templates.put(getTemplateKey(form), new StringTemplateResource(form.getContent()));
        templateEngine.getCacheManager().clearAllCaches();
    }

    public void removeForm(Form form) {
        templates.remove(getTemplateKey(form));
        templateEngine.getCacheManager().clearAllCaches();
    }

    public void setTemplateEngine(TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }

    private String getTemplateKey(Form form) {
        return getTemplateKey(form.getReferenceId(), form.getTemplate());
    }

    private String getTemplateKey(String organizationId, String template) {
        return organizationId + "#" + template;
    }

    private ITemplateResolver defaultTemplateResolver() {
        ClreplacedLoaderTemplateResolver templateResolver = new ClreplacedLoaderTemplateResolver();
        templateResolver.setPrefix("/views/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML");
        return templateResolver;
    }
}

19 Source : TemplateResolver.java
with Apache License 2.0
from gravitee-io

public void setTemplateEngine(TemplateEngine templateEngine) {
    this.templateEngine = templateEngine;
}

19 Source : ThymeleafConfiguration.java
with Apache License 2.0
from gravitee-io

@Bean
public ThymeleafTemplateEngine getTemplateEngine() {
    ThymeleafTemplateEngine thymeleafTemplateEngine = ThymeleafTemplateEngine.create(vertx);
    TemplateEngine templateEngine = thymeleafTemplateEngine.getDelegate().getThymeleafTemplateEngine();
    // set template resolvers
    DomainBasedTemplateResolver overrideTemplateResolver = (DomainBasedTemplateResolver) overrideTemplateResolver();
    overrideTemplateResolver.setTemplateEngine(templateEngine);
    templateEngine.setTemplateResolver(overrideTemplateResolver);
    templateEngine.addTemplateResolver(defaultTemplateResolver());
    return thymeleafTemplateEngine;
}

19 Source : DomainBasedTemplateResolver.java
with Apache License 2.0
from gravitee-io

/**
 * @author David BRreplacedELY (david.brreplacedely at graviteesource.com)
 * @author replacedouan COMPIEGNE (replacedouan.compiegne at graviteesource.com)
 * @author GraviteeSource Team
 */
public clreplaced DomainBasedTemplateResolver extends AbstractConfigurableTemplateResolver {

    private ConcurrentMap<String, StringTemplateResource> templates = new ConcurrentHashMap<>();

    private TemplateEngine templateEngine;

    @Override
    protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) {
        boolean templateFound = templates.containsKey(resourceName);
        String[] templateParts = resourceName.split(Pattern.quote(FormManager.TEMPLATE_NAME_SEPARATOR));
        // template not found for the client, try at domain level
        if (!templateFound && templateParts.length == 2) {
            resourceName = templateParts[0];
            templateFound = templates.containsKey(resourceName);
        }
        if (templateFound) {
            return templates.get(resourceName);
        }
        return null;
    }

    public void addForm(String templateName, String templateContent) {
        templates.put(templateName, new StringTemplateResource(templateContent));
        templateEngine.getCacheManager().clearAllCaches();
    }

    public void removeForm(String templateName) {
        templates.remove(templateName);
        templateEngine.getCacheManager().clearAllCaches();
    }

    public void setTemplateEngine(TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }
}

19 Source : MailContentBuilder.java
with Apache License 2.0
from gigsterous

/**
 * <p>
 * MailContentBuilder clreplaced.
 * </p>
 *
 * @author Martin Myslik
 */
@Service
public clreplaced MailContentBuilder {

    private TemplateEngine templateEngine;

    /**
     * <p>
     * MailContentBuilder constructor.
     * </p>
     */
    @Autowired
    public MailContentBuilder(TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }

    /**
     * <p>
     * Populate email template with custom message.
     * </p>
     */
    public String build(String message, String link) {
        Context context = new Context();
        context.setVariable("message", message);
        context.setVariable("link", link);
        return templateEngine.process("mail/mail", context);
    }
}

19 Source : SubmissionConfiguration.java
with Apache License 2.0
from epam

@Bean
public TemplateEngine templateEngine() {
    TemplateEngine templateEngine = new TemplateEngine();
    templateEngine.setTemplateResolver(fileTemplateResolver());
    return templateEngine;
}

19 Source : ThymeleafEngine.java
with Apache License 2.0
from eclipse

/**
 */
@ApplicationScoped
public clreplaced ThymeleafEngine {

    @Inject
    private FilesLocator filesLocator;

    private TemplateEngine engine;

    @PostConstruct
    public void init() {
        AbstractConfigurableTemplateResolver resolver = new JessieFileTemplateResolver(filesLocator);
        resolver.setTemplateMode("TEXT");
        engine = new TemplateEngine();
        engine.setTemplateResolver(resolver);
    }

    public String processFile(String file, Set<String> alternatives, Map<String, String> variables) {
        StringWriter writer = new StringWriter();
        Context context = new Context();
        for (Map.Entry<String, String> variable : variables.entrySet()) {
            context.setVariable(variable.getKey(), variable.getValue());
        }
        String fileIndication = filesLocator.findFile(file, alternatives);
        if ("-1".equals(fileIndication)) {
            throw new TemplateFileResolutionException(file, alternatives);
        }
        engine.process(fileIndication, context, writer);
        return writer.toString();
    }
}

19 Source : EmailServiceTest.java
with Apache License 2.0
from Decathlon

@ExtendWith(MockitoExtension.clreplaced)
public clreplaced EmailServiceTest {

    @Mock
    private TemplateEngine templateEngine;

    @Mock
    private JavaMailSender emailSender;

    @InjectMocks
    private EmailService cut;

    @Test
    public void testCompressHtmlSpaces() {
        // GIVEN
        String html = "" + "<b>\n" + "    \r\n" + " <i>html  </i>\r\n" + "  \r\n" + "  \n\n\n" + "    </b>";
        // WHEN
        html = cut.compressHtmlSpaces(html);
        // THEN
        replacedertThat(html).isEqualTo("" + "<b>\n" + "<i>html </i>\n" + "</b>");
    }
}

19 Source : ThymeleafViewEngine.java
with MIT License
from daggerok

@Slf4j
@ApplicationScoped
public clreplaced ThymeleafViewEngine extends ViewEngineBase {

    @Inject
    ServletContext servletContext;

    TemplateEngine engine;

    @Override
    public boolean supports(final String view) {
        return !view.contains(".");
    }

    @PostConstruct
    public void postConstruct() {
        final ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(servletContext);
        resolver.setPrefix("/WEB-INF/layouts/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCacheable(false);
        engine = new TemplateEngine();
        engine.setTemplateResolver(resolver);
    }

    @Override
    public void processView(ViewEngineContext context) throws ViewEngineException {
        Try.run(() -> {
            final HttpServletRequest request = context.getRequest();
            final HttpServletResponse response = context.getResponse();
            final WebContext webContext = new WebContext(request, response, servletContext, request.getLocale());
            webContext.setVariables(context.getModels());
            request.setAttribute("view", context.getView());
            engine.process(/*layout*/
            "default", webContext, response.getWriter());
        }).getOrElseThrow(ViewEngineException::new);
    }
}

See More Examples