1 18 19 package org.apache.roller.ui.rendering.velocity.deprecated; 20 21 import java.io.IOException ; 22 import java.io.UnsupportedEncodingException ; 23 import java.net.URLEncoder ; 24 import java.util.HashMap ; 25 import java.util.Map ; 26 import javax.servlet.ServletException ; 27 import javax.servlet.http.HttpServlet ; 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 import org.apache.commons.logging.Log; 31 import org.apache.commons.logging.LogFactory; 32 import org.apache.roller.config.RollerRuntimeConfig; 33 import org.apache.roller.util.URLUtilities; 34 35 36 53 public class RedirectServlet extends HttpServlet { 54 55 private static Log log = LogFactory.getLog(RedirectServlet.class); 56 57 public static final String LanguageServlet = "language"; 58 public static final String CommentsServlet = "comments"; 59 public static final String ResourceServlet = "resources"; 60 public static final String RsdServlet = "rsd"; 61 public static final String FlavorServlet = "flavor"; 62 public static final String RssServlet = "rss"; 63 public static final String AtomServlet = "atom"; 64 public static final String PageServlet = "page"; 65 public static final String SearchServlet = "search"; 66 public static final String XmlrpcServlet = "xmlrpc"; 67 public static final String EditorUI = "editor"; 68 public static final String AdminUI = "admin"; 69 70 71 77 public void doGet(HttpServletRequest request, HttpServletResponse response) 78 throws ServletException , IOException { 79 80 String redirectUrl = null; 81 82 String servlet = request.getServletPath(); 84 if(servlet != null && servlet.trim().length() > 1) { 85 86 servlet = servlet.substring(1); 88 89 if(servlet.endsWith("/")) { 91 servlet = servlet.substring(0, servlet.length() - 1); 92 } 93 } else { 94 } 96 97 log.debug("uri = "+request.getRequestURI()); 98 log.debug("path info = "+request.getPathInfo()); 99 100 101 if(LanguageServlet.equals(servlet)) { 103 redirectUrl = figureLanguageRedirect(request); 104 105 } else if(CommentsServlet.equals(servlet)) { 107 redirectUrl = figureCommentsRedirect(request); 108 109 } else if(ResourceServlet.equals(servlet)) { 111 redirectUrl = figureResourceRedirect(request); 112 113 } else if(RsdServlet.equals(servlet)) { 115 redirectUrl = figureRsdRedirect(request); 116 117 } else if(FlavorServlet.equals(servlet)) { 119 redirectUrl = figureFeedRedirect(request); 120 121 } else if(RssServlet.equals(servlet)) { 123 redirectUrl = figureFeedRedirect(request); 124 125 } else if(AtomServlet.equals(servlet)) { 127 redirectUrl = figureFeedRedirect(request); 128 129 } else if(PageServlet.equals(servlet)) { 131 redirectUrl = figurePageRedirect(request); 132 133 } else if(SearchServlet.equals(servlet)) { 135 redirectUrl = figureSearchRedirect(request); 136 137 } else if(XmlrpcServlet.equals(servlet)) { 139 redirectUrl = figureXmlrpcRedirect(request); 140 141 } else if(EditorUI.equals(servlet)) { 143 redirectUrl = figureEditorRedirect(request); 144 145 } else if(AdminUI.equals(servlet)) { 147 redirectUrl = figureAdminRedirect(request); 148 } 149 150 if(redirectUrl != null) { 151 log.debug("redirecting to "+redirectUrl); 152 153 response.setStatus(response.SC_MOVED_PERMANENTLY); 155 response.setHeader("Location", redirectUrl); 156 } else { 157 response.sendError(response.SC_NOT_FOUND); 159 } 160 } 161 162 163 private String figureLanguageRedirect(HttpServletRequest request) { 165 166 String newUrl = RollerRuntimeConfig.getRelativeContextURL(); 167 168 String pathInfo = request.getPathInfo(); 169 if(pathInfo == null) { 170 return null; 171 } else { 172 pathInfo = pathInfo.substring(1); 173 } 174 175 String [] pathElements = pathInfo.split("/", 2); 176 return newUrl+"/"+pathElements[0]+"/"; 177 } 178 179 180 private String figureCommentsRedirect(HttpServletRequest request) { 182 183 OldCommentsRequest commentsRequest = null; 184 try { 185 commentsRequest = new OldCommentsRequest(request); 187 } catch (Exception ex) { 188 return null; 189 } 190 191 StringBuffer url = new StringBuffer (); 192 193 url.append(RollerRuntimeConfig.getRelativeContextURL()); 194 url.append("/").append(commentsRequest.getWeblogHandle()).append("/"); 195 196 if(commentsRequest.getWeblogAnchor() != null) { 197 198 url.append("entry/").append(URLUtilities.encode(commentsRequest.getWeblogAnchor())); 200 201 } else { 202 return null; 203 } 204 205 return url.toString(); 206 } 207 208 209 private String figureResourceRedirect(HttpServletRequest request) { 211 212 String newUrl = RollerRuntimeConfig.getRelativeContextURL(); 213 214 String pathInfo = request.getPathInfo(); 215 if(pathInfo == null) { 216 return null; 217 } else { 218 pathInfo = pathInfo.substring(1); 219 } 220 221 String [] pathElements = pathInfo.split("/", 2); 222 if(pathElements.length != 2) { 223 return null; 224 } 225 226 return newUrl+"/"+pathElements[0]+"/resource/"+pathElements[1]; 227 } 228 229 230 private String figureRsdRedirect(HttpServletRequest request) { 232 233 String newUrl = RollerRuntimeConfig.getRelativeContextURL(); 234 235 String pathInfo = request.getPathInfo(); 236 if(pathInfo == null) { 237 return null; 238 } else { 239 pathInfo = pathInfo.substring(1); 240 } 241 242 String [] pathElements = pathInfo.split("/", 2); 243 return newUrl+"/"+pathElements[0]+"/rsd"; 244 } 245 246 247 private String figureFeedRedirect(HttpServletRequest request) { 249 250 OldFeedRequest feedRequest = null; 251 try { 252 feedRequest = new OldFeedRequest(request); 254 } catch (Exception ex) { 255 return null; 256 } 257 258 String weblog = feedRequest.getWeblogHandle(); 259 if(weblog == null) { 260 weblog = RollerRuntimeConfig.getProperty("site.frontpage.weblog.handle"); 262 } 263 264 String newUrl = RollerRuntimeConfig.getRelativeContextURL(); 265 newUrl += "/"+weblog+"/feed/entries/"+feedRequest.getFlavor(); 266 267 Map params = new HashMap (); 268 if(feedRequest.getWeblogCategory() != null) { 269 params.put("cat", URLUtilities.encode(feedRequest.getWeblogCategory())); 270 } 271 if(feedRequest.isExcerpts()) { 272 params.put("excerpts", "true"); 273 } 274 275 return newUrl + URLUtilities.getQueryString(params); 276 } 277 278 279 private String figurePageRedirect(HttpServletRequest request) { 281 282 OldPageRequest pageRequest = null; 283 try { 284 pageRequest = new OldPageRequest(request); 286 } catch (Exception ex) { 287 return null; 288 } 289 290 StringBuffer url = new StringBuffer (); 291 Map params = new HashMap (); 292 293 url.append(RollerRuntimeConfig.getRelativeContextURL()); 294 url.append("/").append(pageRequest.getWeblogHandle()).append("/"); 295 296 if(pageRequest.getWeblogPage() != null && 297 !"Weblog".equals(pageRequest.getWeblogPage())) { 298 299 url.append("page/").append(pageRequest.getWeblogPage()); 301 302 if(pageRequest.getWeblogDate() != null) { 304 params.put("date", pageRequest.getWeblogDate()); 305 } 306 if(pageRequest.getWeblogCategory() != null) { 307 params.put("cat", URLUtilities.encode(pageRequest.getWeblogCategory())); 308 } 309 if(pageRequest.getWeblogAnchor() != null) { 310 params.put("entry", URLUtilities.encode(pageRequest.getWeblogAnchor())); 311 } 312 313 } else if(pageRequest.getWeblogAnchor() != null) { 314 315 url.append("entry/").append(URLUtilities.encode(pageRequest.getWeblogAnchor())); 317 318 } else if(pageRequest.getWeblogCategory() != null && pageRequest.getWeblogDate() == null) { 319 String cat = pageRequest.getWeblogCategory(); 320 if(pageRequest.getWeblogCategory().startsWith("/")) { 321 cat = pageRequest.getWeblogCategory().substring(1); 322 } 323 324 url.append("category/").append(URLUtilities.encode(cat)); 325 326 } else if(pageRequest.getWeblogDate() != null && pageRequest.getWeblogCategory() == null) { 327 url.append("date/").append(pageRequest.getWeblogDate()); 328 329 } else { 330 if(pageRequest.getWeblogDate() != null) { 331 params.put("date", pageRequest.getWeblogDate()); 332 } 333 if(pageRequest.getWeblogCategory() != null) { 334 params.put("cat", URLUtilities.encode(pageRequest.getWeblogCategory())); 335 } 336 } 337 338 return url.toString() + URLUtilities.getQueryString(params); 339 } 340 341 342 private String figureSearchRedirect(HttpServletRequest request) { 344 345 String newUrl = RollerRuntimeConfig.getRelativeContextURL(); 346 347 String pathInfo = request.getPathInfo(); 348 if(pathInfo == null) { 349 return null; 350 } else { 351 pathInfo = pathInfo.substring(1); 352 } 353 354 String [] pathElements = pathInfo.split("/", 2); 355 newUrl += "/"+pathElements[0]+"/search"; 356 357 Map params = new HashMap (); 359 if(request.getParameter("q") != null && 360 request.getParameter("q").trim().length() > 0) { 361 362 params.put("q", request.getParameter("q")); 363 364 if(request.getParameter("c") != null && 365 request.getParameter("c").trim().length() > 0) { 366 params.put("cat", request.getParameter("c")); 367 } 368 } 369 370 return newUrl + URLUtilities.getQueryString(params); 371 } 372 373 374 private String figureXmlrpcRedirect(HttpServletRequest request) { 376 377 return URLUtilities.getXmlrpcURL(true); 378 } 379 380 381 private String figureEditorRedirect(HttpServletRequest request) { 383 384 return RollerRuntimeConfig.getRelativeContextURL()+"/roller-ui/"; 385 } 386 387 388 private String figureAdminRedirect(HttpServletRequest request) { 390 391 return RollerRuntimeConfig.getRelativeContextURL()+"/roller-ui/"; 392 } 393 394 } 395 | Popular Tags |