abdera-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jmsn...@apache.org
Subject svn commit: r414893 [1/11] - in /incubator/abdera/java/trunk: ./ build/ core/ core/src/ core/src/main/ core/src/main/java/ core/src/main/java/org/ core/src/main/java/org/apache/ core/src/main/java/org/apache/abdera/ core/src/main/java/org/apache/abdera...
Date Fri, 16 Jun 2006 20:10:56 GMT
Author: jmsnell
Date: Fri Jun 16 13:10:47 2006
New Revision: 414893

URL: http://svn.apache.org/viewvc?rev=414893&view=rev
Log:
Initial check-in

Added:
    incubator/abdera/java/trunk/BUILDING
    incubator/abdera/java/trunk/LICENSE   (with props)
    incubator/abdera/java/trunk/NOTICE
    incubator/abdera/java/trunk/README
    incubator/abdera/java/trunk/build/
    incubator/abdera/java/trunk/build/TODO
    incubator/abdera/java/trunk/build/build.xml
    incubator/abdera/java/trunk/core/
    incubator/abdera/java/trunk/core/pom.xml   (with props)
    incubator/abdera/java/trunk/core/src/
    incubator/abdera/java/trunk/core/src/main/
    incubator/abdera/java/trunk/core/src/main/java/
    incubator/abdera/java/trunk/core/src/main/java/org/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/ExtensionFactory.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/ParseFilter.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/TextFilter.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Base.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Category.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Content.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Control.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/DateTime.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Div.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Document.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Element.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Entry.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElement.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensionElement.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Feed.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Generator.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/IRI.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/InReplyTo.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Link.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Person.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Service.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Source.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/StringElement.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Text.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Total.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Workspace.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/parser/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/parser/ParseException.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/parser/Parser.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/parser/ParserOptions.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParser.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParserOptions.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractXPath.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/BlackListParseFilter.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/ConfigProperties.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Constants.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/MimeTypeHelper.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/NonOpTextFilter.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/ServiceUtil.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/ThreadHelper.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/URIHelper.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/Version.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/WhiteListParseFilter.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/xpath/
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/xpath/XPath.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/xpath/XPathException.java
    incubator/abdera/java/trunk/core/src/main/resources/
    incubator/abdera/java/trunk/core/src/main/resources/META-INF/
    incubator/abdera/java/trunk/core/src/main/resources/META-INF/services/
    incubator/abdera/java/trunk/core/src/main/resources/META-INF/services/org.apache.abdera.factory.ExtensionFactory.example
    incubator/abdera/java/trunk/core/src/main/resources/abdera.properties.example
    incubator/abdera/java/trunk/core/src/test/
    incubator/abdera/java/trunk/core/src/test/java/
    incubator/abdera/java/trunk/core/src/test/java/org/
    incubator/abdera/java/trunk/core/src/test/java/org/apache/
    incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/
    incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/
    incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/
    incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/CoreTests.java
    incubator/abdera/java/trunk/dependencies/
    incubator/abdera/java/trunk/dependencies/README
    incubator/abdera/java/trunk/dependencies/legal/
    incubator/abdera/java/trunk/dependencies/legal/axiom-LICENSE.txt
    incubator/abdera/java/trunk/dependencies/legal/axiom-NOTICE.txt
    incubator/abdera/java/trunk/dependencies/legal/commons-logging-LICENSE.txt
    incubator/abdera/java/trunk/dependencies/legal/geronimo-spec-activation-LICENSE.txt
    incubator/abdera/java/trunk/dependencies/legal/geronimo-spec-javamail-LICENSE.txt
    incubator/abdera/java/trunk/dependencies/legal/jaxen-LICENSE.txt
    incubator/abdera/java/trunk/dependencies/legal/log4j-LICENSE.txt
    incubator/abdera/java/trunk/dependencies/legal/stax-api-LICENSE.txt
    incubator/abdera/java/trunk/docs/
    incubator/abdera/java/trunk/docs/index.html
    incubator/abdera/java/trunk/examples/
    incubator/abdera/java/trunk/examples/pom.xml   (with props)
    incubator/abdera/java/trunk/examples/src/
    incubator/abdera/java/trunk/examples/src/main/
    incubator/abdera/java/trunk/examples/src/main/java/
    incubator/abdera/java/trunk/examples/src/main/java/org/
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/AtomClient.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/ClientException.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/EntryRequestEntity.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/Main.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/NotModifiedException.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/README
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/RequestOptions.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/ServerException.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appclient/SimpleSSLProtocolSocketFactory.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/simple/
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/simple/Create.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/simple/Parse.java
    incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/simple/PrintTitles.java
    incubator/abdera/java/trunk/examples/src/main/resources/
    incubator/abdera/java/trunk/examples/src/main/resources/simple.xml
    incubator/abdera/java/trunk/parser/
    incubator/abdera/java/trunk/parser/pom.xml   (with props)
    incubator/abdera/java/trunk/parser/src/
    incubator/abdera/java/trunk/parser/src/main/
    incubator/abdera/java/trunk/parser/src/main/java/
    incubator/abdera/java/trunk/parser/src/main/java/org/
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCategory.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMCollection.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMContent.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMControl.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDateTime.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDiv.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMEntry.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMException.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensionElement.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensionFactory.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMFeed.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMGenerator.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMIRI.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMInReplyTo.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMLink.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParser.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParserOptions.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMPerson.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMService.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMSource.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMStringElement.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMText.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMTotal.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMUnsupportedContentTypeException.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMUnsupportedTextTypeException.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMWorkspace.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java
    incubator/abdera/java/trunk/parser/src/test/
    incubator/abdera/java/trunk/parser/src/test/java/
    incubator/abdera/java/trunk/parser/src/test/java/complete.xml
    incubator/abdera/java/trunk/parser/src/test/java/entry.xml
    incubator/abdera/java/trunk/parser/src/test/java/feed.xml
    incubator/abdera/java/trunk/parser/src/test/java/org/
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/stax/
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/stax/AtomConformanceTests.java
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/stax/FOMTest.java
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/stax/FeedParserTests.java
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/stax/FeedValidatorTest.java
    incubator/abdera/java/trunk/parser/src/test/java/org/apache/abdera/test/parser/stax/ParserTest.java
    incubator/abdera/java/trunk/parser/src/test/java/simple.xml
    incubator/abdera/java/trunk/parser/src/test/java/simpleEntry.xml
    incubator/abdera/java/trunk/parser/src/test/java/simpleFeed.xml
    incubator/abdera/java/trunk/parser/src/test/java/simpleService.xml
    incubator/abdera/java/trunk/pom.xml   (with props)
    incubator/abdera/java/trunk/security/
    incubator/abdera/java/trunk/security/README
    incubator/abdera/java/trunk/security/pom.xml   (with props)
    incubator/abdera/java/trunk/security/src/
    incubator/abdera/java/trunk/security/src/main/
    incubator/abdera/java/trunk/security/src/main/java/
    incubator/abdera/java/trunk/security/src/main/java/org/
    incubator/abdera/java/trunk/security/src/main/java/org/apache/
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/Encryption.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/EncryptionOptions.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/SecurityException.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/SecurityOptions.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/Signature.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/SignatureOptions.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/util/
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/util/Constants.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/util/EncryptionBase.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/util/SecurityBase.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/util/SignatureBase.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/xmlsec/
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/xmlsec/XmlEncryption.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/xmlsec/XmlEncryptionOptions.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/xmlsec/XmlSecurityOptions.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/xmlsec/XmlSignature.java
    incubator/abdera/java/trunk/security/src/main/java/org/apache/abdera/security/xmlsec/XmlSignatureOptions.java
    incubator/abdera/java/trunk/security/src/test/
    incubator/abdera/java/trunk/security/src/test/java/
    incubator/abdera/java/trunk/security/src/test/java/Placeholder

Added: incubator/abdera/java/trunk/BUILDING
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/BUILDING?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/BUILDING (added)
+++ incubator/abdera/java/trunk/BUILDING Fri Jun 16 13:10:47 2006
@@ -0,0 +1,24 @@
+To build with maven:
+
+  mvn install
+  
+The jars will be compiled and installed in your local Maven repository
+  
+To build with ant:
+
+  # download the project dependencies. This is mandatory before you build!
+  ant -f build/build.xml download 
+
+  # perform a complete build, jars and javadocs will be copied to 'dist' folder
+  ant -f build/build.xml dist
+  
+  # produce a distributable zip
+  ant -f build/build.xml zip
+
+  # clean
+  ant -f build/build.xml clean
+
+  # delete downloaded dependencies
+  ant -f build/build.xml clean-downloads
+
+

Added: incubator/abdera/java/trunk/LICENSE
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/LICENSE?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/LICENSE (added)
+++ incubator/abdera/java/trunk/LICENSE Fri Jun 16 13:10:47 2006
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

Propchange: incubator/abdera/java/trunk/LICENSE
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/abdera/java/trunk/NOTICE
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/NOTICE?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/NOTICE (added)
+++ incubator/abdera/java/trunk/NOTICE Fri Jun 16 13:10:47 2006
@@ -0,0 +1,13 @@
+=========================================================================
+==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+==  Version 2.0, in this case for the Apache Abdera distribution.      ==
+=========================================================================
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of Abdera were orginally developed by
+International Business Machines Corporation and are
+licensed to the Apache Software Foundation under the
+"Software Grant and Corporate Contribution License Agreement",
+informally known as the "Abdera CLA".

Added: incubator/abdera/java/trunk/README
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/README?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/README (added)
+++ incubator/abdera/java/trunk/README Fri Jun 16 13:10:47 2006
@@ -0,0 +1,36 @@
+Apache Abdera
+============================
+
+Apache Abdera is a high-performance, functionally complete implementation 
+of the IETF Atom Syndication Format and Atom Publishing Protocol specifications.
+
+Incubation Disclaimer
+============================
+Abdera is an effort undergoing incubation at the Apache Software 
+Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is
+required of all newly accepted projects until a further review indicates
+that the infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF projects.
+While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be
+fully endorsed by the ASF.
+
+Getting Started
+============================
+See the Getting Started Guide @ 
+  
+  http://incubator.apache.org/abdera/docs/gettingstarted.html
+
+Building
+
+  http://incubator.apache.org/abdera/docs/building.html
+
+We welcome contributions of all kinds, for details of how you can help
+http://incubator.apache.org/abdera/faq.html
+
+Please refer to the website for details of finding the issue tracker, 
+email lists, wiki or IRC channel
+http://incubator.apache.org/abdera/
+
+Please help us make Apache Abdera better - we appreciate any feedback you may have.
+

Added: incubator/abdera/java/trunk/build/TODO
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/TODO?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/TODO (added)
+++ incubator/abdera/java/trunk/build/TODO Fri Jun 16 13:10:47 2006
@@ -0,0 +1,3 @@
+The ant build no longer runs the unit tests.  We need to get that working again.
+The ant download dependency step currently needs to be run separately before the build.  It should be automatic.
+

Added: incubator/abdera/java/trunk/build/build.xml
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/build.xml?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/build.xml (added)
+++ incubator/abdera/java/trunk/build/build.xml Fri Jun 16 13:10:47 2006
@@ -0,0 +1,161 @@
+<project name="abdera" default="build" basedir="..">
+<!--
+
+  abdera Build
+    targets:
+      * build (compile everything)
+      * test  (compile and run test cases)
+      * dist  (compile, test and create jars)
+      * clean (rather self explanatory)
+      * docs  (build the javadocs)
+-->
+  <property name="version" value="0.1" />
+  <property name="site" value="../site" />
+  <property name="work" value="${basedir}/build/work" />
+  <property name="dist" value="${basedir}/dist" />
+  <property name="dist_lib" value="${dist}/lib" />
+  <property name="docs" value="${dist}/docs" />
+  <property name="javadocs" value="${docs}/api" />
+  <property name="core" value="${basedir}/core" />
+  <property name="core.src" value="${core}/src/main/java" />
+  <property name="core.test" value="${core}/src/test/java" />
+  <property name="core.work" value="${work}/core" />
+  <property name="core.jar" value="${dist}/${ant.project.name}.core.${version}.jar" />
+  <property name="parser" value="${basedir}/parser" />
+  <property name="parser.src" value="${parser}/src/main/java" />
+  <property name="parser.test" value="${parser}/src/test/java" />
+  <property name="parser.work" value="${work}/parser" />
+  <property name="parser.jar" value="${dist}/${ant.project.name}.parser.${version}.jar" />
+  <property name="dependencies" value="${basedir}/dependencies" />
+  <path id="jar.dependencies">
+    <fileset dir="${dependencies}" includes="**/*.jar" />
+  </path>
+  
+  <target name="dependencies">
+    <path id="">
+      <fileset dir="dependencies" includes="*.jar" />
+    </path>
+  </target>
+  
+  <target name="init">
+    <echo>
+=====================================================
+${ant.project.name}, ${version}
+Working directory: ${work}
+=====================================================
+    </echo>
+  </target>
+  
+  <target name="compile.core" depends="init">
+    <mkdir dir="${core.work}" />
+    <javac srcdir="${core.src}"
+           destdir="${core.work}"
+           classpathref="jar.dependencies"/>
+  	<javac srcdir="${core.test}"
+  	       destdir="${test}" 
+       	   classpathref="jar.dependencies"
+  		     classpath="${core.work}"/>
+  </target>
+  
+  <target name="compile.parser" depends="init,compile.core">
+    <mkdir dir="${parser.work}" />
+    <javac srcdir="${parser.src}"
+           destdir="${parser.work}"
+           classpathref="jar.dependencies" 
+           classpath="${core.work}" />
+  	<javac srcdir="${parser.test}"
+  	       destdir="${test}"
+  	       classpathref="jar.dependencies"
+  	       classpath="${core.work};${parser.work}" />
+      <copydir dest="${test}" src="${parser.test}" />
+  </target>
+
+  <target name="build" depends="init,compile.core,compile.parser"></target>
+
+  <target name="docs" depends="init">
+    <javadoc packagenames="org.apache.abdera.*"
+             excludepackagenames="org.apache.abdera.util"
+             sourcepath="${core.src}" 
+             destdir="${javadocs}"
+             windowtitle="Abdera"
+             classpathref="jar.dependencies"/>
+    <copy file="${basedir}/docs/index.html" todir="${docs}" />
+  </target>
+  
+  <target name="test" depends="build">
+    <!--java classpathref="jar.dependencies" 
+          classpath="${core.work}:${parser.work}:${server.work}:${test.work}"
+          classname="org.apache.abdera.test.TestSuite" /-->
+  </target>
+
+  <target name="clean">
+    <delete dir="${work}" />
+  	<delete dir="${test}" />
+    <delete dir="${dist}" />
+  </target>
+  
+  <target name="dist" depends="clean,build,test,docs">
+    <mkdir dir="${dist}" />
+    <mkdir dir="${dist_lib}" />
+    <jar destfile="${core.jar}"   basedir="${core.work}" />
+    <jar destfile="${parser.jar}" basedir="${parser.work}" />
+    <copy todir="${dist_lib}">
+      <fileset dir="${dependencies}"  />
+    </copy>
+  	<delete dir="${work}" />
+  	<delete dir="${test}" />
+  </target>
+  
+  <target name="zip" depends="dist"> 
+    <zip destfile="${basedir}/${ant.project.name}.${version}.zip">
+      <fileset dir="${dist}">
+        <include name="**/*.jar" />
+      </fileset>
+      <fileset dir="${docs}" includes="**/*" />
+    </zip>
+  </target>
+
+  <target name="download" depends="init">
+    <echo>Downloading project dependencies.. this may take a moment</echo>
+    <parallel>
+    <get src="http://www.apache.org/dist/java-repository/org.apache.geronimo.specs/jars/geronimo-activation_1.0.2_spec-1.0.jar"
+         dest="${dependencies}/geronimo-activation_1.0.2_spec-1.0.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/org.apache.geronimo.specs/jars/geronimo-javamail_1.3.1_spec-1.0.jar"
+         dest="${dependencies}/geronimo-javamail_1.3.1_spec-1.0.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/ws-commons/jars/axiom-api-1.0.jar"
+         dest="${dependencies}/axiom-api-1.0.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/ws-commons/jars/axiom-impl-1.0.jar"
+         dest="${dependencies}/axiom-impl-1.0.jar" usetimestamp="true" />
+    <get src="http://dist.codehaus.org/jaxen/jars/jaxen-1.1-beta-7.jar"
+         dest="${dependencies}/jaxen-1.1-beta-7.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/log4j/jars/log4j-1.2.12.jar"
+         dest="${dependencies}/log4j-1.2.12.jar" usetimestamp="true" />
+    <get src="http://dist.codehaus.org/stax/jars/stax-1.1.2-dev.jar"
+         dest="${dependencies}/stax-1.1.2-dev.jar" usetimestamp="true" />
+    <get src="http://dist.codehaus.org/stax/jars/stax-api-1.0.jar"
+         dest="${dependencies}/stax-api-1.0.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/commons-logging/jars/commons-logging-1.0.4.jar"
+         dest="${dependencies}/commons-logging-1.0.4.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/commons-codec/jars/commons-codec-1.3.jar"
+         dest="${dependencies}/commons-codec-1.3.jar" usetimestamp="true" />
+    <get src="http://www.apache.org/dist/java-repository/commons-httpclient/jars/commons-httpclient-3.0.1.jar"
+         dest="${dependencies}/commons-httpclient-3.0.1.jar" usetimestamp="true" />
+    <get src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar"
+         dest="${dependencies}/junit-3.8.1.jar" usetimestamp="true" />
+    <get src="http://woodstox.codehaus.org/2.0.5/wstx-asl-2.0.5.jar"
+         dest="${dependencies}/wstx-asl-2.0.5.jar" usetimestamp="true" />
+    </parallel>
+  </target>
+  
+  <target name="clean-downloads" depends="init">
+    <delete><fileset dir="${dependencies}" includes="**/*.jar" /></delete>
+  </target>
+
+  <target name="site-docs" depends="docs">
+    <mkdir dir="${site}/docs/api" />
+    <copy todir="${site}/docs/api">
+      <fileset dir="${javadocs}" />
+    </copy>
+  </target>
+  
+</project>

Added: incubator/abdera/java/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/pom.xml?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/pom.xml (added)
+++ incubator/abdera/java/trunk/core/pom.xml Fri Jun 16 13:10:47 2006
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project 
+  xmlns="http://maven.apache.org/POM/4.0.0" 
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.abdera</groupId>
+    <artifactId>abdera</artifactId>
+    <version>0.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>abdera-core</artifactId>
+  <packaging>jar</packaging>
+  <name>Abdera Core</name>
+  <version>0.1-SNAPSHOT</version>
+  <description>Atom Specification Implementation Core</description>
+  <inceptionYear>2006</inceptionYear>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>geronimo</groupId>
+      <artifactId>geronimo-activation</artifactId>
+    </dependency>
+  </dependencies>
+</project>

Propchange: incubator/abdera/java/trunk/core/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/ExtensionFactory.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/ExtensionFactory.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/ExtensionFactory.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/ExtensionFactory.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,82 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.factory;
+
+import javax.xml.namespace.QName;
+
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Element;
+import org.apache.abdera.model.ExtensionElement;
+
+
+/**
+ * @author James M Snell (jasnell@us.ibm.com)
+ * 
+ * Extension Factories are used to provide a means of dynamically resolving
+ * builders for namespaced extension elements
+ * 
+ * There are four ways of supporting extension elements.
+ * 
+ * 1. Implement your own Factory (hard)
+ * 2. Subclass the default Axiom-based Factory (also somewhat difficult)
+ * 3. Implement and register an ExtensionFactory (wonderfully simple)
+ * 4. Use the Feed Object Model's dynamic support for extensions (also very simple)
+ * 
+ * Registering an Extension Factory requires generally nothing more than 
+ * implementing ExtensionFactory and then creating the file 
+ * META-INF/services/org.apache.abdera.factory.ExtensionFactory and listing
+ * the class names of each ExtensionFactory you wish to register.
+ * 
+ * Note that at this time, ExtensionFactories are specific to the parser 
+ * implementation used.  That is, if you're using the default StAX-based 
+ * FOMParser and FOMFactory implementation, your ExtensionFactores will 
+ * need to also implement FOMExtensionFactory.
+ */
+public interface ExtensionFactory {
+
+  /**
+   * Returns the Namespace URI handled by this Extension Factory. Each
+   * Extension Factory implementation should handle exactly one namespace.
+   * @return The Namespace URI
+   */
+  String getNamespace();
+  
+  /**
+   * Called by the Factory implementaton to create an instance of the 
+   * extension element.  If parent is not null, the new element will 
+   * be automatically added as a child of the parent.
+   * 
+   * @param qname the QName of the extension element
+   * @param parent the Parent of the extension element
+   * @param factory the Factory
+   * @return ExtensionElement The created ExtensionElement
+   */
+  <T extends ExtensionElement>T newExtensionElement(QName qname, Element parent, Factory factory);
+
+  /**
+   * Called by the Factory implementaton to create an instance of the 
+   * extension element.  If parent is not null, the new element will
+   * be automatically set as the root of the document.
+   * 
+   * @param qname the QName of the extension element
+   * @param parent the Parent of the extension element
+   * @param factory the Factory
+   * @return ExtensionElement The created ExtensionElement
+   */
+  <T extends ExtensionElement>T newExtensionElement(QName qname, Document parent, Factory factory);
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/factory/Factory.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,280 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.factory;
+
+import javax.activation.MimeTypeParseException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.activation.DataHandler;
+import javax.activation.MimeType;
+import javax.xml.namespace.QName;
+
+import org.apache.abdera.model.AtomDate;
+import org.apache.abdera.model.Base;
+import org.apache.abdera.model.Category;
+import org.apache.abdera.model.Collection;
+import org.apache.abdera.model.Content;
+import org.apache.abdera.model.Control;
+import org.apache.abdera.model.DateTime;
+import org.apache.abdera.model.Div;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Element;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.ExtensionElement;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Generator;
+import org.apache.abdera.model.IRI;
+import org.apache.abdera.model.InReplyTo;
+import org.apache.abdera.model.Link;
+import org.apache.abdera.model.Person;
+import org.apache.abdera.model.Service;
+import org.apache.abdera.model.Source;
+import org.apache.abdera.model.StringElement;
+import org.apache.abdera.model.Text;
+import org.apache.abdera.model.Total;
+import org.apache.abdera.model.Workspace;
+import org.apache.abdera.parser.Parser;
+import org.apache.abdera.util.ServiceUtil;
+
+
+/**
+ * @author James M Snell (jasnell@us.ibm.com)
+ * 
+ * The Factory interface is the primary means by which Feed Object Model
+ * instances are built.  Factories are specific to parser implementations.
+ * Users will generally not have to know anything about the Factory 
+ * implementation, which will be automatically selected based on the
+ * Abdera configuration options.
+ * 
+ * <code>Factory factory = Factory.INSTANCE;</code>
+ */
+public interface Factory {
+
+  /**
+   * The default Factory instance
+   */
+  public static final Factory INSTANCE = ServiceUtil.newFactoryInstance();
+  
+  Parser newParser();
+  
+  <T extends Element>Document<T> newDocument();
+  
+  Service newService();
+  
+  Service newService(Base parent);
+  
+  Workspace newWorkspace(Element parent);
+  
+  Collection newCollection(Element parent);
+  
+  Feed newFeed();
+  
+  Feed newFeed(Base parent);
+  
+  Entry newEntry();
+  
+  Entry newEntry(Base parent);
+  
+  Category newCategory(Element parent);
+  
+  Category newCategory(URI scheme, String term, String label, Element parent);
+  
+  Content newContent(Content.Type type, Element parent);
+  
+  Content newContent(Content.Type type, MimeType mediaType, Element parent);
+  
+  Content newTextContent(String value, Element parent);
+  
+  Content newHtmlContent(String value, Element parent);
+  
+  Content newXhtmlContent(Div value, Element parent);
+  
+  Content newXmlContent(MimeType mediaType, URI src, ExtensionElement element, Element parent);
+  
+  Content newMediaContent(MimeType mediaType, URI src, DataHandler dataHandler, Element parent);
+
+  DateTime newPublished(Element parent);
+  
+  DateTime newPublished(AtomDate dateTime, Element parent);
+  
+  DateTime newPublished(Date date, Element parent);
+  
+  DateTime newPublished(String date, Element parent);
+  
+  DateTime newPublished(Calendar date, Element parent);
+  
+  DateTime newPublished(long date, Element parent);  
+  
+  DateTime newUpdated(Element parent);
+  
+  DateTime newUpdated(AtomDate dateTime, Element parent);
+  
+  DateTime newUpdated(Date date, Element parent);
+  
+  DateTime newUpdated(String date, Element parent);
+  
+  DateTime newUpdated(Calendar date, Element parent);
+  
+  DateTime newUpdated(long date, Element parent);
+  
+  DateTime newDateTime(QName qname, Element parent);
+  
+  DateTime newDateTime(QName qname, AtomDate dateTime, Element parent);
+  
+  DateTime newDateTime(QName qname, Date date, Element parent);
+  
+  DateTime newDateTime(QName qname, String date, Element parent);
+  
+  DateTime newDateTime(QName qname, Calendar date, Element parent);
+  
+  DateTime newDateTime(QName qname, long date, Element parent);
+  
+  Generator newDefaultGenerator(Element parent);
+  
+  Generator newGenerator(Element parent);
+  
+  Generator newGenerator(URI uri, String version, String value, Element parent);
+  
+  IRI newID(Element parent);
+  
+  IRI newID(String id, Element parent) throws URISyntaxException;
+  
+  IRI newID(URI id, Element parent);
+  
+  IRI newIcon(Element parent);
+
+  IRI newIcon(URI uri, Element parent);
+  
+  IRI newIcon(String URI, Element parent) throws URISyntaxException;
+  
+  IRI newLogo(Element parent);
+  
+  IRI newLogo(URI uri, Element parent);
+  
+  IRI newLogo(String URI, Element parent) throws URISyntaxException;
+  
+  IRI newUri(Element parent);
+  
+  IRI newUri(URI uri, Element parent);
+  
+  IRI newUri(String URI, Element parent) throws URISyntaxException;
+  
+  IRI newIRIElement(QName qname, Element parent);
+  
+  IRI newIRIElement(QName qname, URI uri, Element parent);
+  
+  IRI newIRIElement(QName qname, String URI, Element parent) throws URISyntaxException;
+  
+  Link newLink(Element parent);
+  
+  Link newLink(String href, String rel, MimeType type, String title, String hreflang, long length, Element parent) throws URISyntaxException;
+  
+  Link newLink(URI href, String rel, MimeType type, String title, String hreflang, long length, Element parent);
+  
+  Person newAuthor(Element parent);
+  
+  Person newAuthor(String name, String email, String uri, Element parent) throws URISyntaxException;
+  
+  Person newAuthor(String name, String email, URI uri, Element parent);  
+  
+  Person newContributor(Element parent);
+
+  Person newContributor(String name, String email, String uri, Element parent) throws URISyntaxException;
+  
+  Person newContributor(String name, String email, URI uri, Element parent);  
+
+  Person newPerson(QName qname, Element parent);
+  
+  Person newPerson(QName qname, String name, String email, String uri, Element parent) throws URISyntaxException;
+  
+  Person newPerson(QName qname, String name, String email, URI uri, Element parent);
+  
+  Source newSource(Element parent);
+  
+  Text newText(QName qname, Text.Type type, Element parent);
+  
+  Text newTextTitle(String value, Element parent);
+  
+  Text newHtmlTitle(String value, Element parent);
+  
+  Text newXhtmlTitle(Div value, Element parent);
+
+  Text newTextSubtitle(String value, Element parent);
+  
+  Text newHtmlSubtitle(String value, Element parent);
+  
+  Text newXhtmlSubtitle(Div value, Element parent);
+  
+  Text newTextSummary(String value, Element parent);
+  
+  Text newHtmlSummary(String value, Element parent);
+  
+  Text newXhtmlSummary(Div value, Element parent);
+  
+  Text newTextRights(String value, Element parent);
+  
+  Text newHtmlRights(String value, Element parent);
+  
+  Text newXhtmlRights(Div value, Element parent);
+  
+  Text newTextText(QName qname, String value, Element parent);
+  
+  Text newHtmlText(QName qname, String value, Element parent);
+  
+  Text newXhtmlText(QName qname, Div value, Element parent);
+  
+  StringElement newName(Element parent);
+  
+  StringElement newName(String value, Element parent);
+  
+  StringElement newEmail(Element parent);
+  
+  StringElement newEmail(String value, Element parent);
+  
+  StringElement newStringElement(QName qname, Element parent);
+  
+  StringElement newStringElement(QName qname, String value, Element parent);
+
+  ExtensionElement newExtensionElement(QName qname, Base parent);
+  
+  Control newControl(Element parent);
+  
+  Control newControl(boolean draft, Element parent);
+  
+  Div newDiv(Base parent);
+  
+  InReplyTo newInReplyTo(Element parent);
+  
+  InReplyTo newInReplyTo(URI ref, Element parent);
+  
+  InReplyTo newInReplyTo(String ref, Element parent) throws URISyntaxException;
+  
+  InReplyTo newInReplyTo(URI ref, URI source, URI href, MimeType type, Element parent);
+  
+  InReplyTo newInReplyTo(String ref, String source, String href, String type, Element parent) throws URISyntaxException, MimeTypeParseException;
+  
+  Total newTotal(Element parent);
+  
+  Total newTotal(int totalResponse, Element parent);
+  
+  void registerAsSimpleExtension(QName qname);
+  
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/ParseFilter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/ParseFilter.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/ParseFilter.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/ParseFilter.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,71 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.filter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+/**
+ * ParseFilter's determine which elements and attributes are acceptable
+ * within a parsed document.  They are set via the ParserOptions.setParseFilter
+ * method.
+ */
+public abstract class ParseFilter {
+  
+  private List<QName> qnames = null;
+  private Map<QName,List<QName>> attributes = null;
+  
+  public void add(QName qname) {
+    if (qnames == null) qnames = new ArrayList<QName>();
+    if (!contains(qname)) qnames.add(qname);
+  }
+
+  public boolean contains(QName qname) {
+    if (qnames == null) qnames = new ArrayList<QName>();
+    return qnames.contains(qname);
+  }
+
+  public void addAttribute(QName parent, QName attribute) {
+    if (attributes == null) attributes = new HashMap<QName,List<QName>>();
+    if (attributes.containsKey(parent)) {
+      List<QName> attrs = attributes.get(parent);
+      if (!attrs.contains(attribute)) attrs.add(attribute);
+    } else {
+      List<QName> attrs = new ArrayList<QName>();
+      attrs.add(attribute);
+      attributes.put(parent, attrs);
+    }
+  }
+
+  public boolean containsAttribute(QName qname, QName attribute) {
+    if (attributes == null) attributes = new HashMap<QName,List<QName>>();
+    if (attributes.containsKey(qname)) {
+      List<QName> attrs = attributes.get(qname);
+      return attrs.contains(attribute);
+    } else {
+      return false;
+    }
+  }
+
+  public abstract boolean acceptable(QName qname);
+  public abstract boolean acceptableAttribute(QName qname, QName attribute);
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/TextFilter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/TextFilter.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/TextFilter.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/filter/TextFilter.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,38 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.filter;
+
+import javax.xml.namespace.QName;
+
+import org.apache.abdera.model.Element;
+
+/**
+ * Text filter provides a means of filtering unacceptable text
+ * from elements in the Atom feed, including unwanted text and
+ * markup in HTML entries.
+ */
+public abstract class TextFilter {
+
+  public String filterText(String text, Element parent) {
+    return text;
+  }
+  
+  public String filterAttributeText(String text, QName attribute, Element parent) {
+    return text;
+  }
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,201 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.model;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * <p>Provides an implementation of the Atom Date Construct, 
+ * which is itself a specialization of the RFC3339 date-time.</p>
+ * 
+ * <p>Per RFC4287:</p>
+ * 
+ * <pre>
+ *  3.3.  Date Constructs
+ *
+ *  A Date construct is an element whose content MUST conform to the
+ *  "date-time" production in [RFC3339].  In addition, an uppercase "T"
+ *  character MUST be used to separate date and time, and an uppercase
+ *  "Z" character MUST be present in the absence of a numeric time zone
+ *  offset.
+ *
+ *  atomDateConstruct =
+ *     atomCommonAttributes,
+ *     xsd:dateTime
+ *
+ *  Such date values happen to be compatible with the following
+ *  specifications: [ISO.8601.1988], [W3C.NOTE-datetime-19980827], and
+ *  [W3C.REC-xmlschema-2-20041028].
+ *
+ *  Example Date constructs:
+ *
+ *  &lt;updated>2003-12-13T18:30:02Z&lt;/updated>
+ *  &lt;updated>2003-12-13T18:30:02.25Z&lt;/updated>
+ *  &lt;updated>2003-12-13T18:30:02+01:00&lt;/updated>
+ *  &lt;updated>2003-12-13T18:30:02.25+01:00&lt;/updated>
+ *
+ *  Date values SHOULD be as accurate as possible.  For example, it would
+ *  be generally inappropriate for a publishing system to apply the same
+ *  timestamp to several entries that were published during the course of
+ *  a single day.
+ *  </pre>
+ *  
+ * @author James M Snell (jasnell@us.ibm.com)
+ */
+public final class AtomDate {
+
+  protected Date value = null;
+  
+  public AtomDate() {}
+  
+  public AtomDate(String value) { 
+    this(parse(value));
+  }
+  
+  public AtomDate(Date value) {
+    this.value = value;
+  }
+  
+  public AtomDate(Calendar value) {
+    this(value.getTime());
+  }
+  
+  public AtomDate(long value) {
+    this(new Date(value));
+  }
+  
+  public String getValue() {
+    return format(value);
+  }
+  
+  public void setValue(String value) {
+    this.value = parse(value);
+  }
+
+  public void setValue(Date date) {
+    this.value = date;
+  }
+
+  public void setValue(Calendar calendar) {
+    this.value = calendar.getTime();
+  }
+  
+  public void setValue(long timestamp) {
+    this.value = new Date(timestamp);
+  }
+  
+  public Date getDate() {
+    return value;
+  }
+  
+  public Calendar getCalendar() {
+    Calendar cal = Calendar.getInstance();
+    cal.setTime(value);
+    return cal;
+  }
+  
+  public long getTime() {
+    return value.getTime();
+  }
+  
+  public String toString() {
+    return getValue();
+  }
+  
+  public boolean equals(Object obj) {
+    boolean answer = false;
+    if (obj instanceof Date) {
+      Date d = (Date) obj;
+      answer = (this.value.equals(d));
+    } else if (obj instanceof String) {
+      Date d = parse((String) obj);
+      answer = (this.value.equals(d));
+    } else if (obj instanceof Calendar) {
+      Calendar c = (Calendar) obj;
+      answer = (this.value.equals(c.getTime()));
+    } else if (obj instanceof AtomDate) {
+      Date d = ((AtomDate)obj).value;
+      answer = (this.value.equals(d));
+    }
+    return answer;
+  }
+  
+  private static final String[] masks = {
+    "yyyy-MM-dd'T'HH:mm:ss.SSz",
+    "yyyy-MM-dd't'HH:mm:ss.SSz",                         // invalid
+    "yyyy-MM-dd'T'HH:mm:ss.SS'Z'",
+    "yyyy-MM-dd't'HH:mm:ss.SS'z'",                       // invalid
+    "yyyy-MM-dd'T'HH:mm:ssz",
+    "yyyy-MM-dd't'HH:mm:ssz",                            // invalid
+    "yyyy-MM-dd'T'HH:mm:ss'Z'",
+    "yyyy-MM-dd't'HH:mm:ss'z'",                          // invalid
+    "yyyy-MM-dd'T'HH:mmz",                               // invalid
+    "yyyy-MM-dd't'HH:mmz",                               // invalid
+    "yyyy-MM-dd'T'HH:mm'Z'",                             // invalid
+    "yyyy-MM-dd't'HH:mm'z'",                             // invalid
+    "yyyy-MM-dd",
+    "yyyy-MM",
+    "yyyy"
+  };
+   
+  public static Date parse(String date) {
+    Date d = null;
+    SimpleDateFormat sdf = new SimpleDateFormat();
+    for (int n = 0; n < masks.length; n++) {
+      try {
+        sdf.applyPattern(masks[n]);
+        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+        sdf.setLenient(true);
+        d = sdf.parse(date, new ParsePosition(0));
+        if (d != null) break;
+      } catch (Exception e) {}
+    }
+    if (d == null) 
+      throw new IllegalArgumentException();
+    return d;
+  }
+  
+  public static String format (Date d) {
+    StringBuffer iso8601 = new StringBuffer();
+    SimpleDateFormat sdf = new SimpleDateFormat(masks[2]);
+    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+    sdf.format(d, iso8601, new FieldPosition(0));
+    return iso8601.toString();
+  }
+
+  public static AtomDate valueOf(String value) {
+    return new AtomDate(value);
+  }
+  
+  public static AtomDate valueOf(Date value) {
+    return new AtomDate(value);
+  }
+  
+  public static AtomDate valueOf(Calendar value) {
+    return new AtomDate(value);
+  }
+  
+  public static AtomDate valueOf(long value) {
+    return new AtomDate(value);
+  }
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Base.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Base.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Base.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Base.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,40 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.model;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.apache.abdera.factory.Factory;
+
+
+/**
+ * @author James M Snell (jasnell@us.ibm.com)
+ */
+public interface Base extends Cloneable {
+
+  /**
+   * Serializes the model component out to the specified stream
+   */
+  void writeTo(OutputStream out) throws IOException;
+  
+  <T extends Base>T clone();
+  
+  Factory getFactory();
+  
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Category.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Category.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Category.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Category.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,104 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.model;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+/**
+ * <p>Provides categorization informaton for a feed or entry</p>
+ * 
+ * <p>Per RFC4287:</p>
+ * 
+ * <pre>
+ *  The "atom:category" element conveys information about a category
+ *  associated with an entry or feed.  This specification assigns no
+ *  meaning to the content (if any) of this element.
+ *
+ *  atomCategory =
+ *     element atom:category {
+ *        atomCommonAttributes,
+ *        attribute term { text },
+ *        attribute scheme { atomUri }?,
+ *        attribute label { text }?,
+ *        undefinedContent
+ *     }
+ * </pre>
+ * 
+ * @author James M Snell (jasnell@us.ibm.com)
+ */
+public interface Category 
+  extends ExtensibleElement, StringElement {
+
+  /**
+   * RFC4287: The "term" attribute is a string that identifies the 
+   * category to which the entry or feed belongs.  Category elements 
+   * MUST have a "term" attribute.
+   */
+  String getTerm();
+
+  /**
+   * RFC4287: The "term" attribute is a string that identifies the 
+   * category to which the entry or feed belongs.  Category elements 
+   * MUST have a "term" attribute.
+   */
+  void setTerm(String term);
+  
+  /**
+   * RFC4287: The "scheme" attribute is an IRI that identifies a 
+   * categorization scheme.  Category elements MAY have a "scheme" 
+   * attribute.
+   */
+  URI getScheme() throws URISyntaxException;
+
+  /**
+   * RFC4287: The "scheme" attribute is an IRI that identifies a 
+   * categorization scheme.  Category elements MAY have a "scheme" 
+   * attribute.
+   */
+  void setScheme(URI scheme);
+  
+  /**
+   * RFC4287: The "scheme" attribute is an IRI that identifies a 
+   * categorization scheme.  Category elements MAY have a "scheme" 
+   * attribute.
+   * @throws URISyntaxException 
+   */
+  void setScheme(String scheme) throws URISyntaxException;
+ 
+  /**
+   * RFC4287: The "label" attribute provides a human-readable label 
+   * for display in end-user applications.  The content of the "label" 
+   * attribute is Language-Sensitive.  Entities such as "&amp;amp;" and 
+   * "&amp;lt;" represent their corresponding characters ("&amp;" and 
+   * "&lt;", respectively), not markup.  Category elements MAY have a 
+   * "label" attribute.
+   */
+  String getLabel();
+
+  /**
+   * RFC4287: The "label" attribute provides a human-readable label 
+   * for display in end-user applications.  The content of the "label" 
+   * attribute is Language-Sensitive.  Entities such as "&amp;amp;" and 
+   * "&amp;lt;" represent their corresponding characters ("&amp;" and 
+   * "&lt;", respectively), not markup.  Category elements MAY have a 
+   * "label" attribute.
+   */
+  void setLabel(String label);
+  
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Collection.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,107 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.model;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.activation.MimeType;
+import javax.activation.MimeTypeParseException;
+
+/**
+ * <p>Represents an collection element in an Atom Publishing Protocol 
+ * introspection document.</p>
+ * 
+ * <p>Per APP Draft-08:</p>
+ * 
+ * <pre>
+ *  The "app:collection" describes an Atom Protocol collection.  One
+ *  child element is defined here for app:collection: "app:member-type".
+ *
+ *  appCollection =
+ *     element app:collection {
+ *        appCommonAttributes,
+ *        attribute title { text },
+ *        attribute href { text },
+ *        ( appAccept
+ *          &amp; extensionElement* )
+ *     }
+ * </pre>
+ * 
+ * @author James M Snell (jasnell@us.ibm.com)
+ */
+public interface Collection 
+  extends ExtensibleElement, ExtensionElement {
+
+  /**
+   * APP Draft-08: The app:collection element MUST contain a "title" 
+   * attribute, whose value gives a human-readable name for the collection.  
+   * This attribute is Language-Sensitive.
+   */
+  String getTitle();
+
+  /**
+   * APP Draft-08: The app:collection element MUST contain a "title" 
+   * attribute, whose value gives a human-readable name for the collection.  
+   * This attribute is Language-Sensitive.
+   */
+  void setTitle(String title);
+
+  /**
+   * APP Draft-08: The app:collection element MUST contain a "href" 
+   * attribute, whose value gives the IRI of the collection.
+   */
+  URI getHref() throws URISyntaxException;
+
+  URI getResolvedHref() throws URISyntaxException;
+  
+  /**
+   * APP Draft-08: The app:collection element MUST contain a "href" 
+   * attribute, whose value gives the IRI of the collection.
+   */
+  void setHref(URI href);
+  
+  /**
+   * APP Draft-08: The app:collection element MUST contain a "href" 
+   * attribute, whose value gives the IRI of the collection.
+   * @throws URISyntaxException 
+   */
+  void setHref(String href) throws URISyntaxException;
+
+  /**
+   * PaceMediaEntries5 (proposed change to APP Draft-08)
+   */
+  String[] getAccept() ;
+
+  /**
+   * PaceMediaEntries5 (proposed change to APP Draft-08)
+   */
+  void setAccept(String[] mediaRanges);
+  
+  /**
+   * Returns true if the collection accepts the specified media type
+   * @throws MimeTypeParseException 
+   * @throws javax.activation.MimeTypeParseException 
+   */
+  boolean accepts(String mediaType);
+  
+  /**
+   * Returns true if the collection accepts the specified media type
+   */
+  boolean accepts(MimeType mediaType);
+}

Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Content.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Content.java?rev=414893&view=auto
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Content.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/Content.java Fri Jun 16 13:10:47 2006
@@ -0,0 +1,225 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.model;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.activation.DataHandler;
+import javax.activation.MimeType;
+import javax.activation.MimeTypeParseException;
+
+import org.apache.abdera.util.MimeTypeHelper;
+
+/**
+ * <p>Represents an atom:content element.</p>
+ * 
+ * <p>Atom has a very clearly defined and extremely flexible content 
+ * model.  The model allows for five basic types of content:</p>
+ * 
+ * <ul>
+ * <li>Text, consisting of content that is to be interpreted as plain text with 
+ *     no markup.  For instance, <code>&lt;content type="text">&amp;lt;content&amp;gt;&lt;/content></code>
+ *     is interpreted as literal characer "&lt;" followed by the word "content",
+ *     followed by the literal character "&gt;".</li>
+ * <li>HTML, consisting of content that is to be interpreted as escaped HTML 
+ *     markup.  For instance, <code>&lt;content type="html">&amp;lt;b&amp;gt;content&amp;lt;/b&amp;gt;&lt;/content></code>
+ *     is interpreted as the word "content" surrounded by the HTML <code>&lt;b&gt;</code>
+ *     and <code>&lt;/b&gt;</code> tags.</li>
+ * <li>XHTML, consisting of well-formed XHTML content wrapped in an XHTML div element.
+ *     For instance, <code>&lt;content type="xhtml">&lt;div xmlns="http://www.w3.org/1999/xhtml">&lt;b>Content&lt;/b>&lt;/div>&lt;/content></code>.</li>
+ * <li>XML, consisting of well-formed XML content.
+ *     For instance, <code>&lt;content type="application/xml">&lt;a xmlns="...">&lt;b>&lt;c/>&lt;/b>&lt;/a>&lt;/content></code>.
+ *     The content could, alternatively, be linked to via the src attribute,
+ *     <code>&lt;content type="application/xml" src="http://example.org/foo.xml"/></code>.</li>
+ * <li>Media, consisting of content conforming to any MIME media type.
+ *   <ul>
+ *     <li>Text media types are encoded literally, e.g. <code>&lt;content type="text/calendar">BEGIN:VCALENDAR...&lt;/content></code>.</li>
+ *     <li>Other media types are encoded as Base64 strings, e.g. <code>&lt;content type="image/jpeg">{Base64}&lt;/content></code>.</li>
+ *     <li>Alternatively, media content may use the src attribute, <code>&lt;content type="text/calendar" src="http://example.org/foo.cal"/></code>,
+ *     <code>&lt;content type="image/jpeg" src="http://example.org/foo.jpg" /></code></li>
+ *   </ul>
+ * </li>
+ * </ul>
+ * 
+ * <p>Per RFC4287:</p>
+ * 
+ * <pre>
+ *  The "atom:content" element either contains or links to the content of
+ *  the entry.  The content of atom:content is Language-Sensitive.
+ *
+ *  atomInlineTextContent =
+ *     element atom:content {
+ *        atomCommonAttributes,
+ *        attribute type { "text" | "html" }?,
+ *        (text)*
+ *     }
+ *
+ *  atomInlineXHTMLContent =
+ *     element atom:content {
+ *        atomCommonAttributes,
+ *        attribute type { "xhtml" },
+ *        xhtmlDiv
+ *     }
+ *  atomInlineOtherContent =
+ *     element atom:content {
+ *        atomCommonAttributes,
+ *        attribute type { atomMediaType }?,
+ *        (text|anyElement)*
+ *     }
+ *
+ *  atomOutOfLineContent =
+ *     element atom:content {
+ *        atomCommonAttributes,
+ *        attribute type { atomMediaType }?,
+ *        attribute src { atomUri },
+ *        empty
+ *     }
+ *
+ *  atomContent = atomInlineTextContent
+ *   | atomInlineXHTMLContent
+ *   | atomInlineOtherContent
+ *   | atomOutOfLineContent
+ *
+ * </pre>
+ * 
+ * @author James M Snell (jasnell@us.ibm.com)
+ */
+public interface Content extends StringElement {
+
+  public enum Type { 
+    TEXT, HTML, XHTML, XML, MEDIA;
+  
+    public static Type typeFromString(String val) {
+      Type type = TEXT;
+      if (val != null) {
+        if (val.equalsIgnoreCase("text"))
+          type = TEXT;
+        else if (val.equalsIgnoreCase("html"))
+          type = HTML;
+        else if (val.equalsIgnoreCase("xhtml"))
+          type = XHTML;
+        else if (MimeTypeHelper.isXml(val))
+          type = XML;
+        else {
+          type = MimeTypeHelper.isMimeType(val) ? MEDIA : null;
+        }
+      }
+      return type;
+    }
+    
+  };
+  
+  Type getContentType();
+  
+  <T extends ExtensionElement> T getValueElement();
+  
+  <T extends ExtensionElement>void setValueElement(T value);
+
+  /**
+   * RFC4287: On the atom:content element, the value of the "type" 
+   * attribute MAY be one of "text", "html", or "xhtml".  Failing that, 
+   * it MUST conform to the syntax of a MIME media type, but MUST NOT 
+   * be a composite type.  If neither the type attribute nor
+   * the src attribute is provided, Atom Processors MUST behave as though
+   * the type attribute were present with a value of "text".
+   * 
+   * @returns null if type = text, html or xhtml
+   */
+  MimeType getMimeType();
+
+  /**
+   * RFC4287: On the atom:content element, the value of the "type" 
+   * attribute MAY be one of "text", "html", or "xhtml".  Failing that, 
+   * it MUST conform to the syntax of a MIME media type, but MUST NOT 
+   * be a composite type.  If neither the type attribute nor
+   * the src attribute is provided, Atom Processors MUST behave as though
+   * the type attribute were present with a value of "text".
+   */
+  void setMimeType(MimeType type);
+  
+  /**
+   * RFC4287: On the atom:content element, the value of the "type" 
+   * attribute MAY be one of "text", "html", or "xhtml".  Failing that, 
+   * it MUST conform to the syntax of a MIME media type, but MUST NOT 
+   * be a composite type.  If neither the type attribute nor
+   * the src attribute is provided, Atom Processors MUST behave as though
+   * the type attribute were present with a value of "text".
+   */
+  void setMimeType(String type);
+
+  /**
+   * <p>RFC4287: atom:content MAY have a "src" attribute, whose value MUST 
+   * be an IRI reference.  If the "src" attribute is present, atom:content
+   * MUST be empty.  Atom Processors MAY use the IRI to retrieve the
+   * content and MAY choose to ignore remote content or to present it in a
+   * different manner than local content.</p>
+   *
+   * <p>If the "src" attribute is present, the "type" attribute SHOULD be
+   * provided and MUST be a MIME media type, rather than "text", "html", 
+   * or "xhtml".</p>
+   */
+  URI getSrc() throws URISyntaxException;
+  
+  /**
+   * Returns the fully qualified URI form of the content src attribute.
+   */
+  URI getResolvedSrc() throws URISyntaxException;
+
+  /**
+   * <p>RFC4287: atom:content MAY have a "src" attribute, whose value MUST 
+   * be an IRI reference.  If the "src" attribute is present, atom:content
+   * MUST be empty.  Atom Processors MAY use the IRI to retrieve the
+   * content and MAY choose to ignore remote content or to present it in a
+   * different manner than local content.</p>
+   *
+   * <p>If the "src" attribute is present, the "type" attribute SHOULD be
+   * provided and MUST be a MIME media type, rather than "text", "html", 
+   * or "xhtml".</p>
+   */
+  void setSrc(URI src);
+
+  /**
+   * <p>RFC4287: atom:content MAY have a "src" attribute, whose value MUST 
+   * be an IRI reference.  If the "src" attribute is present, atom:content
+   * MUST be empty.  Atom Processors MAY use the IRI to retrieve the
+   * content and MAY choose to ignore remote content or to present it in a
+   * different manner than local content.</p>
+   *
+   * <p>If the "src" attribute is present, the "type" attribute SHOULD be
+   * provided and MUST be a MIME media type, rather than "text", "html", 
+   * or "xhtml".</p>
+   * @throws URISyntaxException 
+   */
+  void setSrc(String src) throws URISyntaxException;
+  
+  /**
+   * Attempts to Base64 decode the string value of the content element.
+   * @throws UnsupportedOperationException if type = text, html, xhtml, or any application/*+xml, or text/* type 
+   */
+  DataHandler getDataHandler();
+  
+  /**
+   * Sets the string value of the content element by Base64 encoding the
+   * specifed byte array.
+   * @throws MimeTypeParseException 
+   * @throws UnsupportedOperationException if type = text, html, xhtml, or any application/*+xml, or text/* type
+   */
+  void setDataHandler(DataHandler dataHandler);
+
+}



Mime
View raw message