All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.template.velocity.impl.SpringResourceLoaderAdapter Maven / Gradle / Ivy

package org.zodiac.template.velocity.impl;

import org.apache.velocity.util.ExtProperties;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.zodiac.sdk.toolkit.util.AssertUtil;
import org.zodiac.sdk.toolkit.util.file.FileToolUtil;
import org.zodiac.sdk.toolkit.util.lang.StrUtil;

/**
 * 让velocity模板系统使用spring resource loader装载模板的适配器。
 *
 */
public class SpringResourceLoaderAdapter extends AbstractResourceLoader {

    public static final String RESOURCE_LOADER_NAME = "spring";
    public static final String SPRING_RESOURCE_LOADER_KEY = "_spring_resource_loader";

    private String path;
    private ResourceLoader springLoader;

    public SpringResourceLoaderAdapter() {
        super();
    }

    /** 初始化resource loader. */
    @Override
    public void init(ExtProperties configuration) {
        rsvc.getLog().info(getLogID() + " : initialization starting.");

        springLoader = AssertUtil.assertNotNull((ResourceLoader)rsvc.getApplicationAttribute(SPRING_RESOURCE_LOADER_KEY),
            SPRING_RESOURCE_LOADER_KEY);

        path = FileToolUtil.normalizeAbsolutePath(configuration.getString("path"), true);

        AssertUtil.assertTrue(StrUtil.isNotEmpty(path), "path");

        path += "/";

        rsvc.getLog().info(getLogID() + " : set path '" + path + "'");
        rsvc.getLog().info(getLogID() + " : initialization complete.");
    }

    /** 取得资源。 */
    @Override
    protected Resource getResource(String source, String encoding) {
        return springLoader.getResource(path + normalizeTemplateName(source));
    }

    /** 取得用于日志记录的ID。 */
    @Override
    protected String getLogID() {
        return getClass().getSimpleName();
    }

    @Override
    protected String getDesc() {
        return path;
    }

    @Override
    protected String getLoaderName() {
        return RESOURCE_LOADER_NAME;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy