A new AtomPub server for Roller
It's not every weekend that you publish a new implementation of the Atom Publishing Protocol (RFC 5023), but this was one of those weekends.
Emboldened by AI, I decided to write a completely new AtomPub implementation for Roller, replacing the one based on ROME Propono. I wrote Propono back around 2006, and it is now deprecated. The new server is self-contained: it parses and writes Atom with plain StAX, has no Propono dependency, and existing AtomPub clients (should!) see no change (apache/roller#210).
Today I went a step further. AtomPub in Roller used to cover two things: publishing blog entries and uploading files. Now an API caller can also:
- Create and manage categories, including an RFC 5023 category document that clients can use to offer category choices.
- Moderate comments: list them, filter by status, approve or reject them, mark them as spam, and delete them.
- Create and manage weblog templates, the Velocity templates that define the look and feel of the different pages of your blog, including their mobile versions. This works for weblogs that use a custom theme, for weblog administrators.
Here is the model a client sees. The service document lists one workspace for each weblog you belong to, and each workspace holds the collections for that weblog: media files, blog entries, categories, templates and comments.
Roller 7 AtomPub model. Click for the SVG version.
Every URI, permission, element and status code is documented in the new Roller AtomPub Guide, and the test suite checks the guide's examples against the code (apache/roller#212). All of this is on Roller's master branch and will ship in Roller 7.
This site already runs it. In fact this post was written as a draft over AtomPub, the diagram above was uploaded through the media collection, and the post went live with one more AtomPub request.