Apache Abdera
============================

Apache Abdera is a high-performance, functionally complete
implementation of the IETF Atom Syndication Format (RFC 4287) and Atom
Publishing Protocol specifications.

Getting Started
============================

See the Getting Started Guide @
  
  http://abdera.apache.org/

We welcome contributions of all kinds, for details of how you can help
http://abdera.apache.org/faq.html

Please refer to the website for details of finding the issue tracker, 
email lists, wiki or IRC channel

  http://abdera.apache.org/

Please help us make Apache Abdera better - we appreciate any feedback
you may have.


Changes
============================
1.0   - Full implementation of the AtomPub Multipart Media Creation draft.
      - Java 6 complete support.
      - OpenSearch extension rewritten and completed.
      - Improved server extensibiility through RequestProcessors.
      - New RSS extension.
      - Many improvements and bug fixes.
0.4.0 - A simplified server side framework and API for implementing
        services.
      - Sever side filter API for intercepting requests and 
        implementing concerns such as security.
      - A collection of pre-bundled Atom Publishing Protocol adapters 
        for JDBC, JCR, filesystems, and CouchDB.
      - An improved JSON serialization mechanism.
      - New extensions such as OAuth support.
      - New StreamWriter interface for fast Atom document serialization
      - Improved Unicode performance for IRI implementation
      - URI Template Support
      - HTML Parser 
      - Many API improvements and bug fixes!
0.3.0 - Support for the Atompub final draft 
      - Refactored and simplified Server framework
      - Refactored and simplified AbderaClient
      - ExtensionFactory can now provide the mime type for extension elements
      - Improved extensibility
      - Updated dependencies
      - XPath support improvements
      - Geotagging extensions
      - Simple Sharing extensions
      - WSSE Authentication 
      - Bidi extensions
      - Atompub features extensions
      - Feed paging extensions
      - Feed license extensions
      - XML Encryption with Diffie-Hellman key exchange
      - Spring integration support
      - Extensions now packaged in separate jars for modular distribution
      - Improved error handling
      - More examples
      - Less bugs
      - Lots of other improvements
0.2.2 - Upgrade dependencies to Axiom 1.2.1
      - Remove dependency on Stax Reference Implementation
      - Fix Stax API conformance issues so we can work with more Stax parsers
      - Fix XHTML/XML Entry content bug
      - General code cleanups / Hide constructors not intended for general use


Export Notice
============================
   This distribution includes cryptographic software.  The country in 
   which you currently reside may have restrictions on the import, 
   possession, use, and/or re-export to another country, of 
   encryption software.  BEFORE using any encryption software, please 
   check your country's laws, regulations and policies concerning the
   import, possession, or use, and re-export of encryption software, to 
   see if this is permitted.  See <http://www.wassenaar.org/> for more
   information.

   The U.S. Government Department of Commerce, Bureau of Industry and
   Security (BIS), has classified this software as Export Commodity 
   Control Number (ECCN) 5D002.C.1, which includes information security
   software using or performing cryptographic functions with asymmetric
   algorithms.  The form and manner of this Apache Software Foundation
   distribution makes it eligible for export under the License Exception
   ENC Technology Software Unrestricted (TSU) exception (see the BIS 
   Export Administration Regulations, Section 740.13) for both object 
   code and source code.

   The following provides more details on the included cryptographic
   software:      
   
   http://xml.apache.org/security/
   http://www.bouncycastle.org/
