/**
 * Copyright (C) [2013] [Anjuke Inc] 
 * 
 * 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 org.apache.hadoop.hive.hwi.servlet; 
 
import com.sun.jersey.api.core.ResourceConfig; 
import com.sun.jersey.api.view.Viewable; 
import com.sun.jersey.spi.template.ViewProcessor; 
 
import javax.servlet.ServletConfig; 
import javax.servlet.http.HttpServletRequest; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.ext.Provider; 
 
 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
 
/**
 * @author [email protected] 
 */
 
@Provider 
public class VelocityViewProcessor implements ViewProcessor<String> { 
 
 @Context 
 private ThreadLocal<HttpServletRequest> request; 
 
 private final Velocity v; 
 
 public VelocityViewProcessor(@Context ResourceConfig resourceConfig, @Context ServletConfig sc) { 
  v = new Velocity(sc); 
 
 
 @Override 
 public String resolve(String path) { 
  if(v.templateExists(path)){ 
   return path; 
  }else
   return null
  
 
 
 @Override 
 public void writeTo(String resolvedPath, Viewable viewable, OutputStream out) 
   throws IOException { 
   
  // Commit the status and headers to the HttpServletResponse 
  out.flush(); 
 
  v.render(resolvedPath, request.get(), new OutputStreamWriter(out)); 
 
}