package org.docbag.template.transformer.velocity; import java.io.InputStream; import org.apache.commons.collections.ExtendedProperties; import org.apache.velocity.exception.ResourceNotFoundException; import org.apache.velocity.runtime.resource.Resource; import org.apache.velocity.runtime.resource.loader.ResourceLoader; import org.docbag.template.DocumentTemplateStream; /** * ThreadAwareTemplateResourceLoader * * @author Jakub Torbicki */ public class ThreadAwareTemplateResourceLoader extends ResourceLoader { private final ThreadLocal<DocumentTemplateStream> threadLocal = new ThreadLocal<DocumentTemplateStream>(); public ThreadAwareTemplateResourceLoader() { } public void init(ExtendedProperties configuration) { } public void putResource(DocumentTemplateStream documentTemplate) { if (documentTemplate == null) { throw new NullPointerException("DocumentTemplateStream can't be null!"); } threadLocal.set(documentTemplate); } public void clearResource() { threadLocal.remove(); } public InputStream getResourceStream(String source) throws ResourceNotFoundException { DocumentTemplateStream templateStream = threadLocal.get(); if (templateStream != null && templateStream.getName().equals(source)) { return templateStream.getStream(); } return null; } public boolean isSourceModified(Resource resource) { return false; } public long getLastModified(Resource resource) { return 0; } }