1 25 26 package com.j2biz.blogunity.web.servlet; 27 28 import java.io.FileNotFoundException ; 29 import java.io.IOException ; 30 import java.io.InputStream ; 31 import java.io.StringWriter ; 32 import java.util.Enumeration ; 33 import java.util.Properties ; 34 35 import javax.servlet.ServletConfig ; 36 import javax.servlet.ServletException ; 37 import javax.servlet.http.HttpServletRequest ; 38 import javax.servlet.http.HttpServletResponse ; 39 import javax.servlet.http.HttpSession ; 40 41 import org.apache.commons.lang.StringUtils; 42 import org.apache.commons.logging.Log; 43 import org.apache.commons.logging.LogFactory; 44 import org.apache.velocity.Template; 45 import org.apache.velocity.context.Context; 46 import org.apache.velocity.servlet.VelocityServlet; 47 48 import com.j2biz.blogunity.BlogunityManager; 49 import com.j2biz.blogunity.IConstants; 50 import com.j2biz.blogunity.exception.BlogunityException; 51 import com.j2biz.blogunity.i18n.I18N; 52 import com.j2biz.blogunity.i18n.I18NMessageManager; 53 import com.j2biz.blogunity.i18n.I18NStatusFactory; 54 import com.j2biz.blogunity.pojo.Blog; 55 import com.j2biz.blogunity.util.BlogUtils; 56 import com.j2biz.blogunity.web.IActionResult; 57 58 70 public class VelocityViewServlet extends VelocityServlet { 71 72 75 private static final long serialVersionUID = 3257854289644173364L; 76 77 private static final Log log = LogFactory.getLog(VelocityViewServlet.class); 78 79 private static final String MAIN_THEME_PAGE = "mainView.vm"; 80 81 86 protected Properties loadConfiguration(ServletConfig config) throws IOException , 87 FileNotFoundException { 88 89 Properties props = new Properties (); 90 InputStream in = BlogunityManager.getSystemConfiguration().getVelocityPropertiesAsStream(); 91 props.load(in); 92 return props; 93 } 94 95 102 protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, 103 Context context) throws Exception { 104 105 Blog b = (Blog) request.getAttribute("blog"); 106 String blogName = b.getUrlName(); 107 108 String blogThemeDirectory = "blogs/" + blogName + "/theme/"; 111 112 if (StringUtils.isEmpty(blogName)) { 113 BlogunityException ex = new BlogunityException(I18NStatusFactory.create( 115 I18N.ERRORS.BLOG_NOT_FOUND, blogName)); 116 throw new ServletException (ex); 117 118 } 119 120 125 request.setAttribute(IConstants.Request.BLOG_THEME_DIRECTORY, BlogunityManager.getBase() 126 + "/blogs/" + blogName + "/theme"); 127 128 populateContext(request, response, context); 129 130 IActionResult forwardResult = (IActionResult) request 131 .getAttribute(IConstants.Request.CURRENT_THEME_FILE); 132 133 String page = forwardResult.getPath(); 134 135 if (page.charAt(0) == '/') page = page.substring(1); 136 137 Template t = getTemplate(blogThemeDirectory + page); 138 StringWriter sw = new StringWriter (); 139 t.merge(context, sw); 140 141 context.put(IConstants.Request.PAGE_CONTENT, sw.toString()); 143 144 Template template = getTemplate(blogThemeDirectory + MAIN_THEME_PAGE); 145 146 return template; 147 148 } 149 150 158 private void populateContext(HttpServletRequest request, HttpServletResponse response, 159 Context context) { 160 String element; 161 Enumeration enumer = request.getAttributeNames(); 162 while (enumer.hasMoreElements()) { 163 element = (String ) enumer.nextElement(); 164 context.put(element, request.getAttribute(element)); 165 } 166 167 HttpSession session = request.getSession(false); 168 if (session != null) { 169 enumer = session.getAttributeNames(); 170 while (enumer.hasMoreElements()) { 171 element = (String ) enumer.nextElement(); 172 context.put(element, session.getAttribute(element)); 173 } 174 } 175 176 context.put("ctx", request.getContextPath()); 177 context.put("request", request); 178 context.put("response", response); 179 context.put("session", session); 180 181 183 context.put("utils", BlogUtils.getInstance()); 184 context.put("i18n", I18NMessageManager.getInstance()); 185 context.put("host", BlogunityManager.getHost()); 186 context.put("base", BlogunityManager.getBase()); 187 } 188 189 } | Popular Tags |