Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 1997-2013, ( Licensed under the GPL, Version 3.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at 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 org.tinygroup.template.loader;
Created by luoguo on 2014/6/9.
public final class ResourceCompilerUtils {
    private ResourceCompilerUtils() {
    private static ClassNameGetter classNameGetter = new ClassNameGetterDefault();
    private static MemorySourceCompiler compiler = new MemorySourceCompiler();
    public static void setClassNameGetter(ClassNameGetter classNameGetter) {
        . = classNameGetter;
    public static ClassNameGetter getClassNameGetter() {
        return ;
    public static <T> T compileResource(ClassLoader classLoaderString contentString engineIdString paththrows TemplateException {
        ClassName className = .getClassName(path);
        CodeBlock codeBlock = preCompile(contentpath);
        if (className.getPackageName() != null) {
            codeBlock.insertSubCode("package " + className.getPackageName() + ";");
        MemorySource memorySource = new MemorySource(className.getClassName(), codeBlock.toString().replace("$TEMPLATE_PATH"path)
        if (.isModified(className,engineIdmemorySource.getContent())) {
            return (T) .loadClass(classLoader,engineIdmemorySource);
        } else {
            return (T) .loadInstance(classLoaderengineId,className.getClassName());
    public static CodeBlock preCompile(String templateString sourceName) {
        char[] source = template.toCharArray();
        ANTLRInputStream is = new ANTLRInputStream(sourcesource.length);
        // set source file name, it will be displayed in error report. = sourceName;
        TinyTemplateParser parser = new TinyTemplateParser(new CommonTokenStream(new TinyTemplateLexer(is)));
        // remove ConsoleErrorListener
        parser.setErrorHandler(new TinyTemplateErrorStrategy());
        TinyTemplateParser.TemplateContext templateParseTree = parser.template();
        TinyTemplateCodeVisitor visitor = new TinyTemplateCodeVisitor(parser);
        return templateParseTree.accept(visitor);
New to GrepCode? Check out our FAQ X