Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright (C) 2014 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ro.pippo.groovy;
public class GroovyTemplateResolver implements TemplateResolver {
    protected final String pathPrefix;
    protected final Map<StringURLcache;
    protected boolean useCache = false;

    
Creates a new caching template resolver. The cache implementation being used depends on the use of the template engine. If multiple templates can be rendered in parallel, it must be using a thread-safe cache.

Parameters:
cache the backing cache
    public GroovyTemplateResolver(final String pathPrefixfinal Map<StringURLcache) {
        this. = pathPrefix;
        this. = cache;
    }

    
Creates a new caching template resolver using a concurrent hash map as the backing cache.
    public GroovyTemplateResolver(String pathPrefix) {
        this(pathPrefixnew ConcurrentHashMap<StringURL>());
    }
    @Override
    public void configure(final ClassLoader templateClassLoaderfinal TemplateConfiguration configuration) {
        this. = configuration;
        this. = configuration.isCacheTemplates();
    }
    @Override
    public URL resolveTemplate(final String templatePaththrows IOException {
        final String path =  == null ? templatePath : ( + "/" + templatePath);
        TemplateResource templateResource = TemplateResource.parse(path);
        String configurationLocale = .getLocale().toString().replace("-""_");
        URL resource = templateResource.hasLocale() ? getResource(templateResource.toString()) : null;
        if (resource == null) {
            // no explicit locale in the template path or resource not found
            // fallback to the default configuration locale
            resource = getResource(templateResource.withLocale(configurationLocale).toString());
        }
        if (resource == null) {
            // no resource found with the default locale, try without any locale
            resource = getResource(templateResource.withLocale(null).toString());
        }
        if (resource == null) {
            throw new IOException("Unable to load template:" + path);
        }
        if () {
            .put(templatePathresource);
        }
        return resource;
    }
    protected URL getResource(String templatePath) {
        if () {
            URL cachedURL = .get(templatePath);
            if (cachedURL != null) {
                return cachedURL;
            }
        }
        URL resource = ClasspathUtils.locateOnClasspath(templatePath);
        return resource;
    }
New to GrepCode? Check out our FAQ X