You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2005/12/20 21:10:41 UTC
svn commit: r358087 - in /incubator/roller/trunk:
src/org/roller/presentation/velocity/RSDServlet.java
web/WEB-INF/classes/flavors/rsd.vm
Author: agilliland
Date: Tue Dec 20 12:10:37 2005
New Revision: 358087
URL: http://svn.apache.org/viewcvs?rev=358087&view=rev
Log:
new rsd servlet.
Added:
incubator/roller/trunk/src/org/roller/presentation/velocity/RSDServlet.java
incubator/roller/trunk/web/WEB-INF/classes/flavors/rsd.vm
Added: incubator/roller/trunk/src/org/roller/presentation/velocity/RSDServlet.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/velocity/RSDServlet.java?rev=358087&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/velocity/RSDServlet.java (added)
+++ incubator/roller/trunk/src/org/roller/presentation/velocity/RSDServlet.java Tue Dec 20 12:10:37 2005
@@ -0,0 +1,115 @@
+/*
+ * RSDServlet.java
+ *
+ * Created on December 14, 2005, 6:08 PM
+ */
+
+package org.roller.presentation.velocity;
+
+import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.velocity.Template;
+import org.apache.velocity.context.Context;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.servlet.VelocityServlet;
+import org.roller.RollerException;
+import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
+import org.roller.pojos.WebsiteData;
+import org.roller.presentation.InvalidRequestException;
+import org.roller.presentation.RollerContext;
+import org.roller.presentation.WeblogRequest;
+
+
+/**
+ * Generates simple rsd feeds for a given weblog.
+ *
+ *
+ * @web.servlet name="RSDServlet" load-on-startup="0"
+ *
+ * @web.servlet-init-param name="org.apache.velocity.properties"
+ * value="/WEB-INF/velocity.properties"
+ *
+ * @web.servlet-mapping url-pattern="/rsd/*"
+ *
+ * @author Allen Gilliland
+ */
+public class RSDServlet extends VelocityServlet {
+
+ private static Log mLogger = LogFactory.getLog(RSDServlet.class);
+
+
+ /**
+ * Process a request for a Weblog page.
+ */
+ public Template handleRequest(HttpServletRequest request,
+ HttpServletResponse response,
+ Context ctx)
+ throws IOException {
+
+ Template template = null;
+ WeblogRequest weblogRequest = null;
+ WebsiteData weblog = null;
+
+ // first off lets parse the incoming request and validate it
+ try {
+ weblogRequest = new WeblogRequest(request);
+
+ // now make sure the specified weblog really exists
+ UserManager userMgr = RollerFactory.getRoller().getUserManager();
+ weblog = userMgr.getWebsiteByHandle(weblogRequest.getWeblogHandle(), Boolean.TRUE);
+
+ } catch(InvalidRequestException ire) {
+ // An error initializing the request is considered to be a 404
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ request.setAttribute("DisplayException", ire);
+ mLogger.error("Bad Request: "+ire.getMessage());
+
+ return null;
+
+ } catch(RollerException re) {
+ // error looking up the weblog, we assume it doesn't exist
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ request.setAttribute("DisplayException", re);
+ mLogger.warn("Unable to lookup weblog ["+
+ weblogRequest.getWeblogHandle()+"] "+re.getMessage());
+
+ return null;
+ }
+
+
+ // request appears to be valid, lets render
+ try {
+
+ // setup context
+ ctx.put("website", weblog);
+
+ RollerContext rollerContext = new RollerContext();
+ ctx.put("absBaseURL", rollerContext.getAbsoluteContextUrl(request));
+
+ // lookup our rsd template
+ template = getTemplate("/flavors/rsd.vm");
+
+ // make sure response content type is properly set
+ response.setContentType("application/rsd+xml");
+
+ } catch(ResourceNotFoundException rnfe ) {
+
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ request.setAttribute("DisplayException", rnfe);
+ mLogger.warn("ResourceNotFound: "+ request.getRequestURL());
+ mLogger.debug(rnfe);
+ } catch(Exception e) {
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ request.setAttribute("DisplayException", e);
+ mLogger.error("Unexpected exception", e);
+ }
+
+ return template;
+ }
+
+}
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/rsd.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/rsd.vm?rev=358087&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/rsd.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/rsd.vm Tue Dec 20 12:10:37 2005
@@ -0,0 +1,15 @@
+<rsd version="1.0">
+ <service>
+ <engineName>Roller Weblogger</engineName>
+ <engineLink>http://www.rollerweblogger.org/</engineLink>
+ <homePageLink>${absBaseURL}/page/${website.handle}/</homePageLink>
+ <apis>
+ <api name="blogger" preferred="false"
+ apiLink="${absBaseURL}/xmlrpc"
+ blogID="${website.handle}"/>
+ <api name="metaWeblog" preferred="true"
+ apiLink="${absBaseURL}/xmlrpc"
+ blogID="${website.handle}"/>
+ </apis>
+ </service>
+</rsd>
\ No newline at end of file