Return-Path: X-Original-To: apmail-abdera-dev-archive@www.apache.org Delivered-To: apmail-abdera-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 422749C4B for ; Fri, 2 Dec 2011 21:09:49 +0000 (UTC) Received: (qmail 14698 invoked by uid 500); 2 Dec 2011 21:09:49 -0000 Delivered-To: apmail-abdera-dev-archive@abdera.apache.org Received: (qmail 14581 invoked by uid 500); 2 Dec 2011 21:09:48 -0000 Mailing-List: contact dev-help@abdera.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@abdera.apache.org Delivered-To: mailing list dev@abdera.apache.org Received: (qmail 14565 invoked by uid 500); 2 Dec 2011 21:09:47 -0000 Delivered-To: apmail-incubator-abdera-dev@incubator.apache.org Received: (qmail 14559 invoked by uid 99); 2 Dec 2011 21:09:47 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Dec 2011 21:09:47 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of jasnell@gmail.com designates 209.85.214.47 as permitted sender) Received: from [209.85.214.47] (HELO mail-bw0-f47.google.com) (209.85.214.47) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Dec 2011 21:09:41 +0000 Received: by bkbzv15 with SMTP id zv15so3567992bkb.6 for ; Fri, 02 Dec 2011 13:09:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=Zk98vXwbBXZk+UclzTku6gUWlwqTORzmnx1ge1DM8XY=; b=L9op19Kw9qbLaQsXB8MrR9jdInpw6mzJdNn/6zdCHTVhXW06SLx0mP2Q6aXRlh7Mkv qYyGsiOaa7GpJrgC5ULJXg2zlk+3VwZDITy5dPmXZ9O59oyyWK7RFFxEPqY+kq6HJ0lC aoDBkCGXtHzGGDY2uggE8kZnl8J9X4UVZ2MKM= MIME-Version: 1.0 Received: by 10.205.120.2 with SMTP id fw2mr17730bkc.10.1322860159764; Fri, 02 Dec 2011 13:09:19 -0800 (PST) Received: by 10.205.81.205 with HTTP; Fri, 2 Dec 2011 13:09:19 -0800 (PST) Date: Fri, 2 Dec 2011 13:09:19 -0800 Message-ID: Subject: Abdera2 Nearing Completion From: James Snell To: Abdera Dev , Abdera User Content-Type: text/plain; charset=ISO-8859-1 Ok, work on Abdera2 is nearing completion. All that's really left at this point is a ton of testing and documentation, I'll also likely continue to work with a number of new experimental features, but the core modifications are complete and I would like to invite folks to start kicking the tires on it and giving it a spin. Abdera2 is a MAJOR update over Abdera 1.x, and as such, it uses a new package name (org.apache.abdera2.*) and is *NOT* binary compatible with Abdera 1.x. The overwhelming majority of the Atom Feed Object Model (FOM) API remains untouched but there have been important changes, such as the switch over to using the Joda-Time library for all DateTime handling, and the introduction of the new Selector framework API. Also, the Server framework and Client APIs have both been refactored significantly, so there will be a necessary migration path if you choose to upgrade your existing Atom-based applications to Abdera2. I think you'll find the new capabilities well worth the trouble. The part of this that I'm most excited about is the Activity Streams implementation. Plenty of examples are included to help you get started with that. The build and test cases may still be a bit rough around the edges, I'll be working on smoothing all that out over the coming week, so if you run into any issues, let me know. You'll need Maven to build as there is no Ant build option for Abdera2. You can find the code here: http://svn.apache.org/repos/asf/abdera/abdera2/ Below is a high level listing of the changes/new features. There are way too many changes to list them all in detail. Abdera2 - High Level Features (not a comprehensive list) ========================================================= * Updated all dependencies to latest versions * Introduced new dependencies on Joda-Time and Guava Libraries * Refactored package layout, new packaging structure: - common, core, client, server, security, ext and activities * New Common Code Library - Selector Framework, extension to the Guava Predicate API, used extensively throughout Abdera2. - Updated and Extended URI Template Implementation - Updated Unicode Support using ICU4J - Improved efficiency in IRI implementation - Enhanced ISO8601 Date/Time handling using Joda-Time, Guava and the Selector framework - Enhanced support for common HTTP Headers (Authentication, Cache Control, ETag, Preference, Web Linking) - Simplified Lang Tag Support - Enhanced Media Type Support - New lightweight "Pusher" interface.. acts as a shim for simple pub/sub applications. - Lightweight MapReduce implementation built around the Guava Function API designed primarily for relatively small, in-memory analysis operations. Supports asynchronous, non-blocking operations. - Simple Chained Invocation API extending the Guava Function API - API Key and One Time Password Implementations - Utilities for simplifying Hash and HMAC generation and validation - Variety of other useful utilities... * Updated Feed Object Model API, using Joda-Time for all Date-Time handling, use of the Selector API for filtering results * Simplified the Named Writer and Named Parser mechanism in the Atom implementation * Completely refactored HTTP Client API based around the Apache HTTP Client Components 4.x. * Support for Asynchronous, non-blocking HTTP Client operations leveraging the java.util.concurrent.Executor framework and java.util.concurrent.Future * Refactored Publishing Server Provider framework, simplifying the overall architecture and tying in new capabilities from the new Common Code library. * Improved Atom Parsing Performance (my informal testing has demonstrated about a 20-25% improvement on average) * Complete JSON Activity Streams implementation - Support for generating and consuming Activity Streams - Support for all core Object Types and Verbs - Support for a number of extension Object Types and Verbs - Fluent, factory-model API - Immutable, thread-safe objects - Streaming Serialization API - API for using existing Activities objects as templates to create new objects - Extensible serialization/deserialization - Asynchronous, non-blocking parsing and serialization - Support for primary Activity Streams extensions such as Replies and Audience Targeting - Experimental mode that allows playing around with new experimental extensions - JSON Web Token Support - Client and Server side Activity Streams based API support - Type-safe dynamic extensibility API - Merge/Diff API - Filter API based on Selectors - Conversion of JSON Activity Stream to and from Atom