Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2015 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.velocity;
 
 
 import java.io.Writer;
 import java.util.Map;

Author(s):
Decebal Suiu
 
 public class VelocityTemplateEngine implements TemplateEngine {
 
     public static final String VM = "vm";
     public static final String FILE_SUFFIX = "." + ;
 
     private Languages languages;
     private Messages messages;
     private Router router;
     private VelocityEngine velocityEngine;
 
     @Override
     public void init(Application application) {
         this. = application.getLanguages();
         this. = application.getMessages();
         this. = application.getRouter();
 
         PippoSettings pippoSettings = application.getPippoSettings();
 
         String pathPrefix = pippoSettings.getString(.null);
         if (StringUtils.isNullOrEmpty(pathPrefix)) {
             pathPrefix = .;
         }
 
         // create properties (see http://velocity.apache.org/engine/releases/velocity-1.7/developer-guide.html#Configuring_Resource_Loaders)
         // maybe we can found in classpath a file velocity.properties and load all properties from this file
         Properties properties = new Properties();
 //        properties.setProperty("pathPrefix", pathPrefix);
 //        properties.setProperty("resource.loader", "classpath");
 //        properties.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
 //        properties.setProperty("classpath.resource.loader.prefixPath", pathPrefix);
 //        properties.setProperty("classpath.resource.loader.cache", String.valueOf(!pippoSettings.isDev()));
 
         properties.setProperty("resource.loader""myloader");
         properties.setProperty("myloader.resource.loader.class"PrefixedClasspathResourceLoader.class.getName());
         properties.setProperty("myloader.resource.loader.prefix", StringUtils.addEnd(pathPrefix"/"));
         properties.setProperty("myloader.resource.loader.cache", String.valueOf(!pippoSettings.isDev()));
 
 //        properties.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, pathPrefix);
         // velocity.properties
 //        resource.loader = file
 //        file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
 //        file.resource.loader.path = c:/tomcat/webapps/velocity/WEB-INF/templates
 //        file.resource.loader.cache = true
 //        file.resource.loader.modificationCheckInterval = 2
 //        properties.setProperty("input.encoding","UTF-8");
 //        properties.setProperty("output.encoding","UTF-8");
 
          = new VelocityEngine(properties);
     }
 
     public VelocityEngine getVelocityEngine() {
         return ;
     }
 
     @Override
     public void renderString(String templateContentMap<StringObjectmodelWriter writer) {
         // create the velocity context
        VelocityContext context = createVelocityContext(model);
        // merge the template
        try {
            RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices();
            StringReader reader = new StringReader(templateContent);
            SimpleNode node = runtimeServices.parse(reader"StringTemplate");
            Template template = new Template();
            template.setRuntimeServices(runtimeServices);
            template.setData(node);
            template.initDocument();
            template.merge(contextwriter);
        } catch (Exception e) {
            throw new PippoRuntimeException(e);
        }
    }
    @Override
    public void renderResource(String templateNameMap<StringObjectmodelWriter writer) {
        // add the file suffix if it's missing
        if (templateName.indexOf('.') == -1) {
            templateName += ;
        }
        // create the velocity context
        VelocityContext context = createVelocityContext(model);
        // merge the template
        try {
            Template template = .getTemplate(templateName);
            template.merge(contextwriter);
        } catch (Exception e) {
            throw new PippoRuntimeException(e);
        }
    }
    private VelocityContext createVelocityContext(Map<StringObjectmodel) {
        // prepare the locale-aware i18n method
        String language = (Stringmodel.get(.);
        if (StringUtils.isNullOrEmpty(language)) {
            language = .getLanguageOrDefault(language);
        }
        // prepare the locale-aware prettyTime method
        Locale locale = (Localemodel.get(.);
        if (locale == null) {
            locale = .getLocaleOrDefault(language);
        }
        VelocityContext context = new VelocityContext(model);
        context.put("pippo"new PippoHelper(languagelocale));
        context.put("contextPath".getContextPath());
        context.put("appPath".getApplicationPath());
        return context;
    }
New to GrepCode? Check out our FAQ X