LoadingTemplateFactory.java revision 56ed4167b942ec265f9cee70ac4d71d10b3835ce
164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* 264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Copyright (C) 2010 Google Inc. 364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * 464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Licensed under the Apache License, Version 2.0 (the "License"); 564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * you may not use this file except in compliance with the License. 664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * You may obtain a copy of the License at 764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * 864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * http://www.apache.org/licenses/LICENSE-2.0 964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * 1064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Unless required by applicable law or agreed to in writing, software 1164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * distributed under the License is distributed on an "AS IS" BASIS, 1264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * See the License for the specific language governing permissions and 1464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * limitations under the License. 1564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 1664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 1764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipackage com.google.clearsilver.jsilver.interpreter; 1864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 1964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.clearsilver.jsilver.autoescape.EscapeMode; 2064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.clearsilver.jsilver.exceptions.JSilverIOException; 2164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.clearsilver.jsilver.resourceloader.ResourceLoader; 2264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.clearsilver.jsilver.syntax.SyntaxTreeBuilder; 2364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.clearsilver.jsilver.syntax.TemplateSyntaxTree; 2464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 2564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport java.io.IOException; 2664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport java.io.Reader; 2764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport java.io.StringReader; 2864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 2964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/** 3064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Loads a template from disk, and parses it into an AST. Does not do any caching. 3164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 3264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipublic class LoadingTemplateFactory implements TemplateFactory { 3364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 3464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci private final SyntaxTreeBuilder syntaxTreeBuilder = new SyntaxTreeBuilder(); 3564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 3664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public TemplateSyntaxTree find(String templateName, ResourceLoader resourceLoader, 3764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci EscapeMode escapeMode) { 3864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci try { 3964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci Reader reader = resourceLoader.openOrFail(templateName); 4064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci try { 4164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return syntaxTreeBuilder.parse(reader, templateName, escapeMode); 4264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } finally { 4364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci reader.close(); 4464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 4564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } catch (IOException e) { 4664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci throw new JSilverIOException(e); 4764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 4864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 4964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 5064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public TemplateSyntaxTree createTemp(String content, EscapeMode escapeMode) { 5164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return syntaxTreeBuilder.parse(new StringReader(content), "", escapeMode); 5264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 5364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 5464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 5564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci