ApacheCon: Abdera A Java Atom Pub Implementation

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    ApacheCon: Abdera A Java Atom Pub Implementation - Presentation Transcript

    1. Abdera, a Java AtomPub implementation David Calavera 11870.com
    2. vanity slide •Software architect at 11870.com • Open source “aholic”: Hudson, Netbeans • Commiter of the Apache Abdera project
    3. Overview •Atom Publishing Protocol implementation • Atom Syndication Format implementation • version 0.5 comming soon
    4. Creating feeds Abdera abdera = new Abdera(); Feed feed = abdera.newFeed(); feed.setId(\"tag:example.org,2008:/foo\"); feed.setTitle(\"Test Feed\"); feed.setSubtitle(\"Feed subtitle\"); feed.setUpdated(new Date()); feed.addAuthor(\"David Calavera\"); feed.addLink(\"http://example.com\"); feed.addLink(\"http://example.com/foo\",\"self\"); Entry entry = feed.addEntry(); entry.setId(\"tag:example.org,2007:/foo/entries/1\"); entry.setTitle(\"Entry title\"); entry.setSummaryAsHtml(\"<p>This is the entry title</p>\"); entry.setUpdated(new Date());
    5. Reading feeds Abdera abdera = new Abdera(); Parser parser = abdera.getParser(); URL url = new URL(\"http://example.org/feed\"); Document<Feed> doc = parser.parse(url.openStream(),url); Feed feed = doc.getRoot(); System.out.println(feed.getTitle()); for (Entry entry : feed.getEntries()) { System.out.println(\"\\t\" + entry.getTitle()); }
    6. How does a server work? • from top to bottom • AbderaServlet • RequestContext • AbderaFilters • Provider • TargetResolver • RequestProcessor • Adapter
    7. Target resolvers • RouteManager TargetResolver ts = new RouteManager() .addRoute(\"service\", \"/\", TargetType.TYPE_SERVICE) .addRoute(\"feed\", \"/:collection\", TargetType.TYPE_COLLECTION) .addRoute(\"entry\", \"/:collection/:entry:\", TargetType.TYPE_ENTRY) .addRoute(\"openSearch\", \"/os.xml\", CustomTargetType.OPEN_SEARCH); • RegexTargetResolver TargetResolver ts = new RegexTargetResolver() .setPattern(\"/atom(\\\\?[^#]*)?\", TargetType.TYPE_SERVICE) .setPattern(\"/atom/([^/#?;]+)$\", TargetType.TYPE_COLLECTION) .setPattern(\"/atom/([^/#?]+)/([^/#?]+)$\", TargetType.TYPE_ENTRY) .setPattern(\"/os.xml\", CustomTargetType.OPEN_SEARCH);
    8. Adapters • CollectionAdapter ResponseContext postEntry(RequestContext request); ResponseContext deleteEntry(RequestContext request); ResponseContext getEntry(RequestContext request); ResponseContext headEntry(RequestContext request); ResponseContext optionsEntry(RequestContext request); ResponseContext putEntry(RequestContext request); ResponseContext getFeed(RequestContext request); ResponseContext getCategories(RequestContext request);
    9. Adapters • MediaCollectionAdapter ResponseContext postMedia(RequestContext request); ResponseContext deleteMedia(RequestContext request); ResponseContext getMedia(RequestContext request); ResponseContext headMedia(RequestContext request); ResponseContext optionsMedia(RequestContext request); ResponseContext putMedia(RequestContext request);
    10. More stuff • Spring integration • Multipart media creation • OAuth • Open search • JSON Serialization • Custom writers • Pre-built adapters
    11. Questions? • Resources • Abdera: http://incubator.apache.org/abdera • AtomPub: http://ietf.org/rfc/rfc5023 • Atom format: http://ietf.org/rfc/rfc4287 • Atom list: http://www.imc.org/atom-syntax • My blog: http://thinkincode.net

    + David CalaveraDavid Calavera, 2 years ago

    custom

    1185 views, 2 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1185
      • 1185 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 8
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?