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