Search in sources :

Example 16 with ResourceLoader

use of cn.taketoday.core.io.ResourceLoader in project today-framework by TAKETODAY.

the class ApplicationTests method customResourceLoaderFromConstructor.

@Test
void customResourceLoaderFromConstructor() {
    ResourceLoader resourceLoader = new DefaultResourceLoader();
    TestApplication application = new TestApplication(resourceLoader, ExampleWebConfig.class);
    this.context = application.run();
    then(application.getLoader()).should().setResourceLoader(resourceLoader);
}
Also used : DefaultResourceLoader(cn.taketoday.core.io.DefaultResourceLoader) ResourceLoader(cn.taketoday.core.io.ResourceLoader) DefaultResourceLoader(cn.taketoday.core.io.DefaultResourceLoader) Test(org.junit.jupiter.api.Test)

Example 17 with ResourceLoader

use of cn.taketoday.core.io.ResourceLoader in project today-framework by TAKETODAY.

the class GenericFilterBean method init.

/**
 * Standard way of initializing this filter.
 * Map config parameters onto bean properties of this filter, and
 * invoke subclass initialization.
 *
 * @param filterConfig the configuration for this filter
 * @throws ServletException if bean properties are invalid (or required
 * properties are missing), or if subclass initialization fails.
 * @see #initFilterBean
 */
@Override
public final void init(FilterConfig filterConfig) throws ServletException {
    Assert.notNull(filterConfig, "FilterConfig must not be null");
    this.filterConfig = filterConfig;
    // Set bean properties from init parameters.
    PropertyValues pvs = getFilterConfigPropertyValues(filterConfig, requiredProperties);
    if (!pvs.isEmpty()) {
        try {
            BeanWrapper bw = BeanWrapper.forBeanPropertyAccess(this);
            ResourceLoader resourceLoader = new ServletContextResourceLoader(filterConfig.getServletContext());
            Environment env = this.environment;
            if (env == null) {
                env = new StandardServletEnvironment();
            }
            bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, env));
            initBeanWrapper(bw);
            bw.setPropertyValues(pvs, true);
        } catch (BeansException ex) {
            String msg = "Failed to set bean properties on filter '" + filterConfig.getFilterName() + "': " + ex.getMessage();
            logger.error(msg, ex);
            throw new NestedServletException(msg, ex);
        }
    }
    // Let subclasses do whatever initialization they like.
    initFilterBean();
    if (logger.isDebugEnabled()) {
        logger.debug("Filter '{}' configured for use", filterConfig.getFilterName());
    }
}
Also used : ResourceLoader(cn.taketoday.core.io.ResourceLoader) ServletContextResourceLoader(cn.taketoday.web.context.support.ServletContextResourceLoader) BeanWrapper(cn.taketoday.beans.BeanWrapper) PropertyValues(cn.taketoday.beans.PropertyValues) NestedServletException(cn.taketoday.web.servlet.NestedServletException) StandardServletEnvironment(cn.taketoday.web.context.support.StandardServletEnvironment) Environment(cn.taketoday.core.env.Environment) ResourceEditor(cn.taketoday.core.io.ResourceEditor) StandardServletEnvironment(cn.taketoday.web.context.support.StandardServletEnvironment) ServletContextResourceLoader(cn.taketoday.web.context.support.ServletContextResourceLoader) BeansException(cn.taketoday.beans.BeansException)

Example 18 with ResourceLoader

use of cn.taketoday.core.io.ResourceLoader in project today-framework by TAKETODAY.

the class FreeMarkerConfigurerTests method freeMarkerConfigurerWithNonFileResourceLoaderPath.

@Test
@SuppressWarnings("rawtypes")
public void freeMarkerConfigurerWithNonFileResourceLoaderPath() throws Exception {
    freeMarkerConfigurer.setTemplateLoaderPath("file:/mydir");
    Properties settings = new Properties();
    settings.setProperty("localized_lookup", "false");
    freeMarkerConfigurer.setFreemarkerSettings(settings);
    freeMarkerConfigurer.setResourceLoader(new ResourceLoader() {

        @Override
        public Resource getResource(String location) {
            if (!("file:/mydir".equals(location) || "file:/mydir/test".equals(location))) {
                throw new IllegalArgumentException(location);
            }
            return new ByteArrayResource("test".getBytes(), "test");
        }

        @Override
        public ClassLoader getClassLoader() {
            return getClass().getClassLoader();
        }
    });
    freeMarkerConfigurer.afterPropertiesSet();
    assertThat(freeMarkerConfigurer.getConfiguration()).isInstanceOf(Configuration.class);
    Configuration fc = freeMarkerConfigurer.getConfiguration();
    Template ft = fc.getTemplate("test");
    assertThat(FreeMarkerTemplateUtils.processTemplateIntoString(ft, new HashMap())).isEqualTo("test");
}
Also used : ResourceLoader(cn.taketoday.core.io.ResourceLoader) Configuration(freemarker.template.Configuration) HashMap(java.util.HashMap) Resource(cn.taketoday.core.io.Resource) ByteArrayResource(cn.taketoday.core.io.ByteArrayResource) FileSystemResource(cn.taketoday.core.io.FileSystemResource) ByteArrayResource(cn.taketoday.core.io.ByteArrayResource) Properties(java.util.Properties) Template(freemarker.template.Template) Test(org.junit.jupiter.api.Test)

Example 19 with ResourceLoader

use of cn.taketoday.core.io.ResourceLoader in project today-infrastructure by TAKETODAY.

the class GenericFilterBean method init.

/**
 * Standard way of initializing this filter.
 * Map config parameters onto bean properties of this filter, and
 * invoke subclass initialization.
 *
 * @param filterConfig the configuration for this filter
 * @throws ServletException if bean properties are invalid (or required
 * properties are missing), or if subclass initialization fails.
 * @see #initFilterBean
 */
@Override
public final void init(FilterConfig filterConfig) throws ServletException {
    Assert.notNull(filterConfig, "FilterConfig must not be null");
    this.filterConfig = filterConfig;
    // Set bean properties from init parameters.
    PropertyValues pvs = getFilterConfigPropertyValues(filterConfig, requiredProperties);
    if (!pvs.isEmpty()) {
        try {
            BeanWrapper bw = BeanWrapper.forBeanPropertyAccess(this);
            ResourceLoader resourceLoader = new ServletContextResourceLoader(filterConfig.getServletContext());
            Environment env = this.environment;
            if (env == null) {
                env = new StandardServletEnvironment();
            }
            bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, env));
            initBeanWrapper(bw);
            bw.setPropertyValues(pvs, true);
        } catch (BeansException ex) {
            String msg = "Failed to set bean properties on filter '" + filterConfig.getFilterName() + "': " + ex.getMessage();
            logger.error(msg, ex);
            throw new NestedServletException(msg, ex);
        }
    }
    // Let subclasses do whatever initialization they like.
    initFilterBean();
    if (logger.isDebugEnabled()) {
        logger.debug("Filter '{}' configured for use", filterConfig.getFilterName());
    }
}
Also used : ResourceLoader(cn.taketoday.core.io.ResourceLoader) ServletContextResourceLoader(cn.taketoday.web.context.support.ServletContextResourceLoader) BeanWrapper(cn.taketoday.beans.BeanWrapper) PropertyValues(cn.taketoday.beans.PropertyValues) NestedServletException(cn.taketoday.web.servlet.NestedServletException) StandardServletEnvironment(cn.taketoday.web.context.support.StandardServletEnvironment) Environment(cn.taketoday.core.env.Environment) ResourceEditor(cn.taketoday.core.io.ResourceEditor) StandardServletEnvironment(cn.taketoday.web.context.support.StandardServletEnvironment) ServletContextResourceLoader(cn.taketoday.web.context.support.ServletContextResourceLoader) BeansException(cn.taketoday.beans.BeansException)

Example 20 with ResourceLoader

use of cn.taketoday.core.io.ResourceLoader in project today-infrastructure by TAKETODAY.

the class ConfigDataEnvironmentPostProcessorIntegrationTests method runWhenUsingCustomResourceLoader.

@Test
void runWhenUsingCustomResourceLoader() {
    this.application.setResourceLoader(new ResourceLoader() {

        @Override
        public Resource getResource(String location) {
            if (location.equals("classpath:/custom.properties")) {
                return new ByteArrayResource("the.property: fromcustom".getBytes(), location);
            }
            return new ClassPathResource("doesnotexist");
        }

        @Override
        public ClassLoader getClassLoader() {
            return getClass().getClassLoader();
        }
    });
    ConfigurableApplicationContext context = this.application.run("--context.config.name=custom");
    String property = context.getEnvironment().getProperty("the.property");
    assertThat(property).isEqualTo("fromcustom");
}
Also used : ConfigurableApplicationContext(cn.taketoday.context.ConfigurableApplicationContext) ResourceLoader(cn.taketoday.core.io.ResourceLoader) Resource(cn.taketoday.core.io.Resource) ClassPathResource(cn.taketoday.core.io.ClassPathResource) ByteArrayResource(cn.taketoday.core.io.ByteArrayResource) ByteArrayResource(cn.taketoday.core.io.ByteArrayResource) ClassPathResource(cn.taketoday.core.io.ClassPathResource) Test(org.junit.jupiter.api.Test)

Aggregations

ResourceLoader (cn.taketoday.core.io.ResourceLoader)22 Test (org.junit.jupiter.api.Test)14 DefaultResourceLoader (cn.taketoday.core.io.DefaultResourceLoader)12 ByteArrayResource (cn.taketoday.core.io.ByteArrayResource)8 Resource (cn.taketoday.core.io.Resource)6 ConfigurableApplicationContext (cn.taketoday.context.ConfigurableApplicationContext)4 FileSystemResource (cn.taketoday.core.io.FileSystemResource)4 Configuration (freemarker.template.Configuration)4 Template (freemarker.template.Template)4 HashMap (java.util.HashMap)4 Properties (java.util.Properties)4 BeanWrapper (cn.taketoday.beans.BeanWrapper)2 BeansException (cn.taketoday.beans.BeansException)2 PropertyValues (cn.taketoday.beans.PropertyValues)2 ApplicationContext (cn.taketoday.context.ApplicationContext)2 ConfigurableEnvironment (cn.taketoday.core.env.ConfigurableEnvironment)2 Environment (cn.taketoday.core.env.Environment)2 PropertySources (cn.taketoday.core.env.PropertySources)2 ClassPathResource (cn.taketoday.core.io.ClassPathResource)2 FileSystemResourceLoader (cn.taketoday.core.io.FileSystemResourceLoader)2