in app/src/main/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java [252:409]
private String calculateForwardUrl(HttpServletRequest request,
String handle, String locale,
String context, String data) {
if(log.isDebugEnabled()) {
log.debug(handle+","+locale+","+context+","+data);
}
StringBuilder forwardUrl = new StringBuilder(64);
// POST urls, like comment and trackback servlets
if("POST".equals(request.getMethod())) {
// posting to permalink, this means comment or trackback
if(context.equals("entry")) {
// trackback requests are required to have an "excerpt" param
if(request.getParameter("excerpt") != null) {
forwardUrl.append(TRACKBACK_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(locale != null) {
forwardUrl.append('/');
forwardUrl.append(locale);
}
forwardUrl.append('/');
forwardUrl.append(context);
if(data != null) {
forwardUrl.append('/');
forwardUrl.append(data);
}
// comment requests are required to have a "content" param
} else if(request.getParameter("content") != null) {
forwardUrl.append(COMMENT_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(locale != null) {
forwardUrl.append('/');
forwardUrl.append(locale);
}
forwardUrl.append('/');
forwardUrl.append(context);
if(data != null) {
forwardUrl.append('/');
forwardUrl.append(data);
}
}
} else {
// someone posting data where they aren't supposed to
return null;
}
} else {
// no context means weblog homepage
if(context == null) {
forwardUrl.append(PAGE_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(locale != null) {
forwardUrl.append('/');
forwardUrl.append(locale);
}
} else {
switch (context) {
// requests handled by PageServlet
case "page":
case "entry":
case "date":
case "category":
case "tags":
forwardUrl.append(PAGE_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(locale != null) {
forwardUrl.append('/');
forwardUrl.append(locale);
}
forwardUrl.append('/');
forwardUrl.append(context);
if(data != null) {
forwardUrl.append('/');
forwardUrl.append(data);
}
break;
// requests handled by FeedServlet
case "feed":
forwardUrl.append(FEED_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(locale != null) {
forwardUrl.append('/');
forwardUrl.append(locale);
}
if(data != null) {
forwardUrl.append('/');
forwardUrl.append(data);
}
break;
// requests handled by ResourceServlet
case "resource":
forwardUrl.append(RESOURCE_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(data != null) {
forwardUrl.append('/');
forwardUrl.append(data);
}
break;
// requests handled by MediaResourceServlet
case "mediaresource":
forwardUrl.append(MEDIA_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(data != null) {
forwardUrl.append('/');
forwardUrl.append(data);
}
break;
// requests handled by SearchServlet
case "search":
forwardUrl.append(SEARCH_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
if(locale != null) {
forwardUrl.append('/');
forwardUrl.append(locale);
}
break;
// requests handled by RSDServlet
case "rsd":
forwardUrl.append(RSD_SERVLET);
forwardUrl.append('/');
forwardUrl.append(handle);
break;
// unsupported url
default:
return null;
}
}
}
if(log.isDebugEnabled()) {
log.debug("FORWARD_URL "+forwardUrl.toString());
}
return forwardUrl.toString();
}