You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2011/10/20 00:33:52 UTC

svn commit: r1186541 [5/8] - in /abdera/abdera2: ./ .settings/ activities/ activities/.settings/ activities/src/main/java/org/apache/abdera2/activities/client/ activities/src/main/java/org/apache/abdera2/activities/extra/ activities/src/main/java/org/a...

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/factory/StreamBuilder.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/factory/StreamBuilder.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/factory/StreamBuilder.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/factory/StreamBuilder.java Wed Oct 19 22:33:04 2011
@@ -22,12 +22,12 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Writer;
 import java.nio.channels.WritableByteChannel;
-import java.util.Date;
 import java.util.Locale;
 
 import javax.activation.DataHandler;
 import javax.xml.namespace.QName;
 
+import org.joda.time.DateTime;
 import org.apache.abdera2.Abdera;
 import org.apache.abdera2.common.anno.Name;
 import org.apache.abdera2.common.iri.IRI;
@@ -415,7 +415,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeAcceptsNothing();
     }
 
-    public StreamBuilder writeAttribute(QName qname, Date value) {
+    public StreamBuilder writeAttribute(QName qname, DateTime value) {
         return (StreamBuilder)super.writeAttribute(qname, value);
     }
 
@@ -435,7 +435,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeAttribute(qname, value);
     }
 
-    public StreamBuilder writeAttribute(String name, Date value) {
+    public StreamBuilder writeAttribute(String name, DateTime value) {
         return (StreamBuilder)super.writeAttribute(name, value);
     }
 
@@ -451,7 +451,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeAttribute(name, value);
     }
 
-    public StreamBuilder writeAttribute(String name, String namespace, Date value) {
+    public StreamBuilder writeAttribute(String name, String namespace, DateTime value) {
         return (StreamBuilder)super.writeAttribute(name, namespace, value);
     }
 
@@ -467,7 +467,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeAttribute(name, namespace, value);
     }
 
-    public StreamBuilder writeAttribute(String name, String namespace, String prefix, Date value) {
+    public StreamBuilder writeAttribute(String name, String namespace, String prefix, DateTime value) {
         return (StreamBuilder)super.writeAttribute(name, namespace, prefix, value);
     }
 
@@ -543,7 +543,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeContributor(name);
     }
 
-    public StreamBuilder writeDate(QName qname, Date date) {
+    public StreamBuilder writeDate(QName qname, DateTime date) {
         return (StreamBuilder)super.writeDate(qname, date);
     }
 
@@ -551,15 +551,15 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeDate(qname, date);
     }
 
-    public StreamBuilder writeDate(String name, Date date) {
+    public StreamBuilder writeDate(String name, DateTime date) {
         return (StreamBuilder)super.writeDate(name, date);
     }
 
-    public StreamBuilder writeDate(String name, String namespace, Date date) {
+    public StreamBuilder writeDate(String name, String namespace, DateTime date) {
         return (StreamBuilder)super.writeDate(name, namespace, date);
     }
 
-    public StreamBuilder writeDate(String name, String namespace, String prefix, Date date) {
+    public StreamBuilder writeDate(String name, String namespace, String prefix, DateTime date) {
         return (StreamBuilder)super.writeDate(name, namespace, prefix, date);
     }
 
@@ -579,7 +579,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeDraft(draft);
     }
 
-    public StreamBuilder writeEdited(Date date) {
+    public StreamBuilder writeEdited(DateTime date) {
         return (StreamBuilder)super.writeEdited(date);
     }
 
@@ -591,7 +591,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeElementText(value);
     }
 
-    public StreamBuilder writeElementText(Date value) {
+    public StreamBuilder writeElementText(DateTime value) {
         return (StreamBuilder)super.writeElementText(value);
     }
 
@@ -736,7 +736,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writePersonUri(uri);
     }
 
-    public StreamBuilder writePublished(Date date) {
+    public StreamBuilder writePublished(DateTime date) {
         return (StreamBuilder)super.writePublished(date);
     }
 
@@ -796,7 +796,7 @@ public class StreamBuilder extends Abstr
         return (StreamBuilder)super.writeTitle(type, value);
     }
 
-    public StreamBuilder writeUpdated(Date date) {
+    public StreamBuilder writeUpdated(DateTime date) {
         return (StreamBuilder)super.writeUpdated(date);
     }
 

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Categories.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Categories.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Categories.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Categories.java Wed Oct 19 22:33:04 2011
@@ -31,6 +31,7 @@ import static org.apache.abdera2.common.
  * collection.
  */
 @QName(value=LN_CATEGORIES,ns=APP_NS)
+@SuppressWarnings("rawtypes")
 public interface Categories extends ExtensibleElement {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Collection.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Collection.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Collection.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Collection.java Wed Oct 19 22:33:04 2011
@@ -48,6 +48,7 @@ import org.apache.abdera2.common.selecto
  * </pre>
  */
 @QName(value=LN_COLLECTION,ns=APP_NS)
+@SuppressWarnings("rawtypes")
 public interface Collection extends ExtensibleElement {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTime.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTime.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTime.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTime.java Wed Oct 19 22:33:04 2011
@@ -33,7 +33,7 @@ public interface DateTime extends Elemen
      * 
      * @return The Atom Date value of this element
      */
-    org.apache.abdera2.common.date.DateTime getValue();
+    org.joda.time.DateTime getValue();
 
     /**
      * Returns the content value of the element as a java.util.Date object
@@ -68,7 +68,7 @@ public interface DateTime extends Elemen
      * 
      * @param dateTime the Atom Date value
      */
-    DateTime setValue(org.apache.abdera2.common.date.DateTime dateTime);
+    DateTime setValue(org.joda.time.DateTime dateTime);
 
     /**
      * Sets the content value of the element

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTimeWrapper.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTimeWrapper.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTimeWrapper.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/DateTimeWrapper.java Wed Oct 19 22:33:04 2011
@@ -19,9 +19,11 @@ package org.apache.abdera2.model;
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.Locale;
 
 import javax.xml.namespace.QName;
 
+import org.apache.abdera2.common.date.DateTimes;
 import org.apache.abdera2.factory.Factory;
 
 /**
@@ -37,18 +39,18 @@ public abstract class DateTimeWrapper ex
         super(factory, qname);
     }
 
-    public org.apache.abdera2.common.date.DateTime getValue() {
-        org.apache.abdera2.common.date.DateTime value = null;
+    public org.joda.time.DateTime getValue() {
+        org.joda.time.DateTime value = null;
         String v = getText();
         if (v != null) {
-            value = org.apache.abdera2.common.date.DateTime.valueOf(v);
+            value = org.joda.time.DateTime.parse(v);
         }
         return value;
     }
 
-    public DateTime setValue(org.apache.abdera2.common.date.DateTime dateTime) {
+    public DateTime setValue(org.joda.time.DateTime dateTime) {
         if (dateTime != null)
-            setText(dateTime.getValue());
+            setText(DateTimes.format(dateTime));
         else
             setText("");
         return this;
@@ -56,7 +58,7 @@ public abstract class DateTimeWrapper ex
 
     public DateTime setDate(Date date) {
         if (date != null)
-            setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+            setText(DateTimes.format(date));
         else
             setText("");
         return this;
@@ -64,43 +66,43 @@ public abstract class DateTimeWrapper ex
 
     public DateTime setCalendar(Calendar date) {
         if (date != null)
-            setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+            setText(DateTimes.format(date));
         else
             setText("");
         return this;
     }
 
     public DateTime setTime(long date) {
-        setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+        setText(DateTimes.format(date));
         return this;
     }
 
     public DateTime setString(String date) {
         if (date != null)
-            setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+            setText(DateTimes.format(date));
         else
             setText("");
         return this;
     }
 
     public Date getDate() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getDate() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? ad.toDate() : null;
     }
 
     public Calendar getCalendar() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getCalendar() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? ad.toCalendar(Locale.getDefault()) : null;
     }
 
     public long getTime() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getTime() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? ad.getMillis() : null;
     }
 
     public String getString() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getValue() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? DateTimes.format(ad) : null;
     }
 
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Document.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Document.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Document.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Document.java Wed Oct 19 22:33:04 2011
@@ -18,7 +18,6 @@
 package org.apache.abdera2.model;
 
 import java.io.Serializable;
-import java.util.Date;
 
 import javax.activation.MimeType;
 
@@ -88,14 +87,14 @@ public interface Document<T extends Elem
      * 
      * @return The last-modified date
      */
-    Date getLastModified();
+    org.joda.time.DateTime getLastModified();
 
     /**
      * Sets the last modified date for this document
      * 
      * @param lastModified the last-modified date
      */
-    Document<T> setLastModified(Date lastModified);
+    Document<T> setLastModified(org.joda.time.DateTime lastModified);
 
     /**
      * Gets the charset used for this document

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Element.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Element.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Element.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Element.java Wed Oct 19 22:33:04 2011
@@ -266,6 +266,7 @@ public interface Element extends Base, I
      */
     <T extends Element> List<T> getElements();
 
+    @SuppressWarnings("rawtypes")
     <T extends Element> List<T> getElements(Selector selector);
     
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementIteratorWrapper.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementIteratorWrapper.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementIteratorWrapper.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementIteratorWrapper.java Wed Oct 19 22:33:04 2011
@@ -22,6 +22,7 @@ import java.util.Iterator;
 import org.apache.abdera2.common.selector.Selector;
 import org.apache.abdera2.factory.Factory;
 
+@SuppressWarnings("rawtypes")
 public class ElementIteratorWrapper<T extends Element> implements Iterator<T> {
 
     private final Iterator<?> iterator;
@@ -57,7 +58,7 @@ public class ElementIteratorWrapper<T ex
     public T next() {
       T item = current;
       current = get_current();
-      return (T)factory.getElementWrapper(item);
+      return factory.<T>getElementWrapper(item);
     }
 
     public void remove() {

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java Wed Oct 19 22:33:04 2011
@@ -37,7 +37,7 @@ import org.apache.abdera2.writer.WriterO
 /**
  * Base implementation used for static extensions.
  */
-@SuppressWarnings("unchecked")
+@SuppressWarnings({"unchecked","rawtypes"})
 public abstract class ElementWrapper implements Element {
 
     private Element internal;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Entry.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Entry.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Entry.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Entry.java Wed Oct 19 22:33:04 2011
@@ -22,7 +22,6 @@ import static org.apache.abdera2.common.
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Date;
 import java.util.List;
 
 import javax.activation.DataHandler;
@@ -111,6 +110,7 @@ import org.apache.abdera2.common.selecto
  * </pre>
  */
 @QName(value=LN_ENTRY,ns=ATOM_NS)
+@SuppressWarnings("rawtypes")
 public interface Entry extends ExtensibleElement {
 
     Person getAuthorInherited();
@@ -528,7 +528,7 @@ public interface Entry extends Extensibl
      * 
      * @return a java.util.Date for the atom:published value
      */
-    Date getPublished();
+    org.joda.time.DateTime getPublished();
 
     /**
      * Set the value of the atom:published element
@@ -536,8 +536,10 @@ public interface Entry extends Extensibl
      * @param value The java.util.Date
      * @return The newly created atom:published element
      */
-    DateTime setPublished(Date value);
+    DateTime setPublished(org.joda.time.DateTime value);
 
+    DateTime setPublishedNow();
+    
     /**
      * Set the value of the atom:published element using the serialized string value
      * 
@@ -828,7 +830,7 @@ public interface Entry extends Extensibl
      * 
      * @return A java.util.Date value
      */
-    Date getUpdated();
+    org.joda.time.DateTime getUpdated();
 
     /**
      * Set the atom:updated value
@@ -836,8 +838,10 @@ public interface Entry extends Extensibl
      * @param value The new value
      * @return The newly created atom:updated element
      */
-    DateTime setUpdated(Date value);
+    DateTime setUpdated(org.joda.time.DateTime value);
 
+    DateTime setUpdatedNow();
+    
     /**
      * Set the atom:updated value
      * 
@@ -865,7 +869,7 @@ public interface Entry extends Extensibl
      * 
      * @return app:edited
      */
-    Date getEdited();
+    org.joda.time.DateTime getEdited();
 
     /**
      * Set the value of app:edited
@@ -873,8 +877,10 @@ public interface Entry extends Extensibl
      * @param value The java.util.Date value
      * @return The newly created app:edited element
      */
-    DateTime setEdited(Date value);
+    DateTime setEdited(org.joda.time.DateTime value);
 
+    DateTime setEditedNow();
+    
     /**
      * Set the value of app:edited
      * 

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElement.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElement.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElement.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElement.java Wed Oct 19 22:33:04 2011
@@ -26,6 +26,7 @@ import org.apache.abdera2.common.selecto
 /**
  * An abstract element that can be extended with namespaced child elements
  */
+@SuppressWarnings("rawtypes")
 public interface ExtensibleElement extends Element {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElementWrapper.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElementWrapper.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElementWrapper.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensibleElementWrapper.java Wed Oct 19 22:33:04 2011
@@ -28,7 +28,7 @@ import org.apache.abdera2.factory.Factor
  * ElementWrapper implementation that implements the ExtensibleElement interface. This should be used to create static
  * extension elements that support extensions
  */
-@SuppressWarnings("unchecked")
+@SuppressWarnings({"unchecked","rawtypes"})
 public abstract class ExtensibleElementWrapper extends ElementWrapper implements ExtensibleElement {
 
     protected ExtensibleElementWrapper(Element internal) {

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensionIterator.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensionIterator.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensionIterator.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ExtensionIterator.java Wed Oct 19 22:33:04 2011
@@ -27,6 +27,7 @@ import javax.xml.namespace.QName;
 /**
  * Most of the original code for this class came from the OMChildrenQNameIterator from Axiom
  */
+@SuppressWarnings("rawtypes")
 public class ExtensionIterator implements Iterator<Element> {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Feed.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Feed.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Feed.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Feed.java Wed Oct 19 22:33:04 2011
@@ -104,6 +104,7 @@ import org.apache.abdera2.common.selecto
  * </pre>
  */
 @QName(value=LN_FEED,ns=ATOM_NS)
+@SuppressWarnings("rawtypes")
 public interface Feed extends Source {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Link.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Link.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Link.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Link.java Wed Oct 19 22:33:04 2011
@@ -233,13 +233,15 @@ public interface Link extends Extensible
       private Helper() {}
       
       public static final WebLink toWebLink(Link link) {
-        WebLink weblink = new WebLink(link.getResolvedHref());
-        weblink.addRel(link.getRel());
-        weblink.setAnchor(link.getResolvedBaseUri());
-        weblink.setMediaType(link.getMimeType());
-        weblink.setHrefLang(link.getHrefLang());
-        weblink.setTitle(link.getTitle());
-        return weblink;
+        return WebLink
+          .make()
+          .iri(link.getResolvedHref())
+          .rel(link.getRel())
+          .anchor(link.getResolvedBaseUri())
+          .mediaType(link.getMimeType())
+          .lang(link.getHrefLang())
+          .title(link.getTitle())
+          .get();
       }
       
       public static final Iterable<Link> fromWebLink(Abdera abdera, WebLink weblink) {

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Service.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Service.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Service.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Service.java Wed Oct 19 22:33:04 2011
@@ -51,6 +51,7 @@ import org.apache.abdera2.common.selecto
  * </pre>
  */
 @QName(value=LN_SERVICE,ns=APP_NS)
+@SuppressWarnings("rawtypes")
 public interface Service extends ExtensibleElement {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Source.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Source.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Source.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Source.java Wed Oct 19 22:33:04 2011
@@ -20,7 +20,6 @@ package org.apache.abdera2.model;
 import static org.apache.abdera2.common.Constants.ATOM_NS;
 import static org.apache.abdera2.common.Constants.LN_SOURCE;
 
-import java.util.Date;
 import java.util.List;
 
 import org.apache.abdera2.common.anno.QName;
@@ -71,6 +70,7 @@ import org.apache.abdera2.common.selecto
  * </pre>
  */
 @QName(value=LN_SOURCE,ns=ATOM_NS)
+@SuppressWarnings("rawtypes")
 public interface Source extends ExtensibleElement {
     /**
      * Returns the first author listed for the entry
@@ -657,7 +657,7 @@ public interface Source extends Extensib
      * 
      * @return The atom:updated as a java.util.Date
      */
-    Date getUpdated();
+    org.joda.time.DateTime getUpdated();
 
     /**
      * Set the atom:updated value
@@ -665,8 +665,10 @@ public interface Source extends Extensib
      * @param value The java.util.Date
      * @return The newly created atom:updated element
      */
-    DateTime setUpdated(Date value);
+    DateTime setUpdated(org.joda.time.DateTime value);
 
+    DateTime setUpdatedNow();
+    
     /**
      * Set the atom:updated value
      * 

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Workspace.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Workspace.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Workspace.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Workspace.java Wed Oct 19 22:33:04 2011
@@ -51,6 +51,7 @@ import org.apache.abdera2.common.selecto
  * </pre>
  */
 @QName(value=LN_WORKSPACE,ns=APP_NS)
+@SuppressWarnings("rawtypes")
 public interface Workspace extends ExtensibleElement {
 
     /**

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CategorySchemeSelector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CategorySchemeSelector.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CategorySchemeSelector.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CategorySchemeSelector.java Wed Oct 19 22:33:04 2011
@@ -21,6 +21,7 @@ import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.abdera2.common.iri.IRI;
+import org.apache.abdera2.common.selector.AbstractSelector;
 import org.apache.abdera2.common.selector.Selector;
 import org.apache.abdera2.model.Category;
 
@@ -30,7 +31,8 @@ import org.apache.abdera2.model.Category
  * @see org.apache.abdera2.common.selector.Selector
  */
 public class CategorySchemeSelector 
-  implements Selector {
+  extends AbstractSelector<Category>
+  implements Selector<Category> {
 
   private static final long serialVersionUID = 7008363856043465676L;
   private final Set<IRI> schemes = new HashSet<IRI>();

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CollectionAcceptSelector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CollectionAcceptSelector.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CollectionAcceptSelector.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/CollectionAcceptSelector.java Wed Oct 19 22:33:04 2011
@@ -22,6 +22,7 @@ import java.util.Set;
 
 import javax.activation.MimeType;
 
+import org.apache.abdera2.common.selector.AbstractSelector;
 import org.apache.abdera2.common.selector.Selector;
 import org.apache.abdera2.model.Collection;
 
@@ -31,7 +32,8 @@ import org.apache.abdera2.model.Collecti
  * accept elements
  */
 public class CollectionAcceptSelector 
-  implements Selector {
+extends AbstractSelector<Collection>
+  implements Selector<Collection> {
 
   private static final long serialVersionUID = 1821941024155067263L;
   private final Set<MimeType> types = 

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkHrefLangSelector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkHrefLangSelector.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkHrefLangSelector.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkHrefLangSelector.java Wed Oct 19 22:33:04 2011
@@ -22,6 +22,7 @@ import java.util.Set;
 
 import org.apache.abdera2.common.lang.Lang;
 import org.apache.abdera2.common.lang.Range;
+import org.apache.abdera2.common.selector.AbstractSelector;
 import org.apache.abdera2.common.selector.Selector;
 import org.apache.abdera2.model.Link;
 
@@ -30,7 +31,9 @@ import org.apache.abdera2.model.Link;
  * a matching hreflang attribute.
  * @see org.apache.abdera2.common.selector.Selector
  */
-public class LinkHrefLangSelector implements Selector {
+public class LinkHrefLangSelector 
+extends AbstractSelector<Link>
+implements Selector<Link> {
 
   private static final long serialVersionUID = 7008363856043465676L;
   private final Set<Lang> langs = new HashSet<Lang>();

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkRelSelector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkRelSelector.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkRelSelector.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/LinkRelSelector.java Wed Oct 19 22:33:04 2011
@@ -20,6 +20,7 @@ package org.apache.abdera2.model.selecto
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.abdera2.common.selector.AbstractSelector;
 import org.apache.abdera2.common.selector.Selector;
 import org.apache.abdera2.model.Link;
 
@@ -28,7 +29,9 @@ import org.apache.abdera2.model.Link;
  * that match a given set of rel attribute values
  * @see org.apache.abdera2.common.selector.Selector
  */
-public class LinkRelSelector implements Selector {
+public class LinkRelSelector 
+extends AbstractSelector<Link>
+implements Selector<Link> {
 
   private static final long serialVersionUID = 7008363856043465676L;
   private final Set<String> rels = new HashSet<String>();

Added: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/Selectors.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/Selectors.java?rev=1186541&view=auto
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/Selectors.java (added)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/Selectors.java Wed Oct 19 22:33:04 2011
@@ -0,0 +1,98 @@
+package org.apache.abdera2.model.selector;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.activation.MimeType;
+
+import org.apache.abdera2.common.iri.IRI;
+import org.apache.abdera2.common.lang.Lang;
+import org.apache.abdera2.common.lang.Range;
+import org.apache.abdera2.common.selector.PropertySelector;
+import org.apache.abdera2.common.selector.Selector;
+import org.apache.abdera2.model.Category;
+import org.apache.abdera2.model.Collection;
+import org.apache.abdera2.model.Entry;
+import org.apache.abdera2.model.Link;
+import org.apache.abdera2.xpath.XPath;
+import org.joda.time.DateTime;
+
+import com.google.common.base.Predicate;
+
+public class Selectors {
+
+  public static Selector<Entry> updated(Predicate<DateTime> predicate) {
+    return 
+      PropertySelector.<Entry>create(
+        Entry.class, 
+        "getUpdated",
+        predicate);
+  }
+  
+  public static Selector<Entry> edited(Predicate<DateTime> predicate) {
+    return
+      PropertySelector.<Entry>create(
+        Entry.class,
+        "getEdited",
+        predicate);
+  }
+  
+  public static Selector<Entry> published(Predicate<DateTime> predicate) {
+    return
+      PropertySelector.<Entry>create(
+        Entry.class,
+        "getPublished",
+        predicate);
+  }
+  
+  public static Selector<Category> withCategoryScheme(String... schemes) {
+    return new CategorySchemeSelector(schemes);
+  }
+  
+  public static Selector<Category> withCategoryScheme(IRI... schemes) {
+    return new CategorySchemeSelector(schemes);
+  }
+  
+  public static Selector<Collection> accepts(String... types) {
+    return new CollectionAcceptSelector(types);
+  }
+  
+  public static Selector<Collection> accepts(MimeType... types) {
+    return new CollectionAcceptSelector(types);
+  }
+  
+  public static Selector<Link> withHrefLang(Range range) {
+    return new LinkHrefLangSelector(range);
+  }
+  
+  public static Selector<Link> withHrefLang(String... langs) {
+    return new LinkHrefLangSelector(langs);
+  }
+  
+  public static Selector<Link> withHrefLang(Lang... langs) {
+    return new LinkHrefLangSelector(langs);
+  }
+  
+  public static Selector<Link> withHrefLang(Locale locale) {
+    return new LinkHrefLangSelector(Lang.fromLocale(locale));
+  }
+  
+  public static Selector<Link> withRel(String... rels) {
+    return new LinkRelSelector(rels);
+  }
+  
+  @SuppressWarnings("rawtypes")
+  public static Selector xpath(String path) {
+    return new XPathSelector(path);
+  }
+  
+  @SuppressWarnings("rawtypes")
+  public static Selector xpath(String path, XPath xpath) {
+    return new XPathSelector(path,xpath);
+  }
+  
+  @SuppressWarnings("rawtypes")
+  public static Selector xpath(String path, XPath xpath, Map<String, String> namespaces) {
+    return new XPathSelector(path,xpath,namespaces);
+  }
+}

Propchange: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/Selectors.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/XPathSelector.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/XPathSelector.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/XPathSelector.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/selector/XPathSelector.java Wed Oct 19 22:33:04 2011
@@ -20,6 +20,7 @@ package org.apache.abdera2.model.selecto
 import java.util.Map;
 
 import org.apache.abdera2.Abdera;
+import org.apache.abdera2.common.selector.AbstractSelector;
 import org.apache.abdera2.common.selector.Selector;
 import org.apache.abdera2.model.Element;
 import org.apache.abdera2.xpath.XPath;
@@ -28,7 +29,10 @@ import org.apache.abdera2.xpath.XPath;
  * Selects a collection based on a boolean XPath expression
  * @see org.apache.abdera2.common.selector.Selector
  */
-public class XPathSelector implements Selector {
+@SuppressWarnings("rawtypes")
+public class XPathSelector 
+extends AbstractSelector
+implements Selector {
 
     private static final long serialVersionUID = 7751803876821166591L;
 

Added: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/Parsers.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/Parsers.java?rev=1186541&view=auto
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/Parsers.java (added)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/Parsers.java Wed Oct 19 22:33:04 2011
@@ -0,0 +1,135 @@
+package org.apache.abdera2.parser;
+
+import java.io.InputStream;
+import java.io.Reader;
+
+import org.apache.abdera2.Abdera;
+import org.apache.abdera2.model.Document;
+import org.apache.abdera2.model.Element;
+
+import com.google.common.base.Function;
+
+public final class Parsers {
+
+  private Parsers() {}
+ 
+  public static interface InputStreamFunction<E extends Element> 
+    extends Function<InputStream,Document<E>> {}
+  
+  public static interface ReaderFunction<E extends Element> 
+    extends Function<Reader,Document<E>> {}
+  
+  public static <E extends Element>InputStreamFunction<E> forInputStream(
+    final Parser parser,
+    final String base,
+    final ParserOptions options) {
+    return new InputStreamFunction<E>() {
+      public Document<E> apply(InputStream in) {
+        return parser.parse(in, base, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>InputStreamFunction<E> forInputStream(
+    final Parser parser, 
+    final ParserOptions options) {
+    return new InputStreamFunction<E>() {
+      public Document<E> apply(InputStream in) {
+        return parser.parse(in, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>InputStreamFunction<E> forInputStream(
+    final Parser parser) {
+    return new InputStreamFunction<E>() {
+      public Document<E> apply(InputStream in) {
+        return parser.parse(in);
+      }
+    };
+  }
+  
+  public static <E extends Element>InputStreamFunction<E> forInputStream() {
+    return new InputStreamFunction<E>() {
+      public Document<E> apply(InputStream in) {
+        return Abdera.getInstance().getParser().parse(in);
+      }
+    };
+  }
+  
+  public static <E extends Element>InputStreamFunction<E> forInputStream(
+    final String base,
+    final ParserOptions options) {
+    return new InputStreamFunction<E>() {
+      public Document<E> apply(InputStream in) {
+        return Abdera.getInstance().getParser().parse(in, base, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>InputStreamFunction<E> forInputStream(
+    final ParserOptions options) {
+    return new InputStreamFunction<E>() {
+      public Document<E> apply(InputStream in) {
+        return Abdera.getInstance().getParser().parse(in, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>ReaderFunction<E> forReader(
+    final Parser parser,
+    final String base,
+    final ParserOptions options) {
+    return new ReaderFunction<E>() {
+      public Document<E> apply(Reader in) {
+        return parser.parse(in, base, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>ReaderFunction<E> forReader(
+    final Parser parser, 
+    final ParserOptions options) {
+    return new ReaderFunction<E>() {
+      public Document<E> apply(Reader in) {
+        return parser.parse(in, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>ReaderFunction<E> forReader(
+    final Parser parser) {
+    return new ReaderFunction<E>() {
+      public Document<E> apply(Reader in) {
+        return parser.parse(in);
+      }
+    };
+  }
+  
+  public static <E extends Element>ReaderFunction<E> forReader() {
+    return new ReaderFunction<E>() {
+      public Document<E> apply(Reader in) {
+        return Abdera.getInstance().getParser().parse(in);
+      }
+    };
+  }
+  
+  public static <E extends Element>ReaderFunction<E> forReader(
+    final String base,
+    final ParserOptions options) {
+    return new ReaderFunction<E>() {
+      public Document<E> apply(Reader in) {
+        return Abdera.getInstance().getParser().parse(in, base, options);
+      }
+    };
+  }
+  
+  public static <E extends Element>ReaderFunction<E> forReader(
+    final ParserOptions options) {
+    return new ReaderFunction<E>() {
+      public Document<E> apply(Reader in) {
+        return Abdera.getInstance().getParser().parse(in, options);
+      }
+    };
+  }
+}

Propchange: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/Parsers.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCategories.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCategories.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCategories.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCategories.java Wed Oct 19 22:33:04 2011
@@ -33,6 +33,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
+@SuppressWarnings("rawtypes")
 public class FOMCategories extends FOMExtensibleElement implements Categories {
 
     private static final long serialVersionUID = 5480273546375102411L;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCollection.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCollection.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCollection.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMCollection.java Wed Oct 19 22:33:04 2011
@@ -40,7 +40,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
-@SuppressWarnings("deprecation")
+@SuppressWarnings({"deprecation","rawtypes"})
 public class FOMCollection extends FOMExtensibleElement implements Collection {
 
     private static final String[] ENTRY = {"application/atom+xml;type=\"entry\""};

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDateTime.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDateTime.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDateTime.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDateTime.java Wed Oct 19 22:33:04 2011
@@ -19,9 +19,10 @@ package org.apache.abdera2.parser.axiom;
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.Locale;
 
 import javax.xml.namespace.QName;
-
+import org.apache.abdera2.common.date.DateTimes;
 import org.apache.abdera2.model.DateTime;
 import org.apache.abdera2.model.Element;
 import org.apache.axiom.om.OMContainer;
@@ -33,7 +34,7 @@ import org.apache.axiom.om.OMXMLParserWr
 public class FOMDateTime extends FOMElement implements DateTime {
 
     private static final long serialVersionUID = -6611503566172011733L;
-    private org.apache.abdera2.common.date.DateTime value;
+    private org.joda.time.DateTime value;
 
     public FOMDateTime(QName qname) {
         super(qname);
@@ -59,7 +60,7 @@ public class FOMDateTime extends FOMElem
         setTime(time);
     }
 
-    public FOMDateTime(QName qname, org.apache.abdera2.common.date.DateTime dateTime) {
+    public FOMDateTime(QName qname, org.joda.time.DateTime dateTime) {
         this(qname);
         setValue(dateTime);
     }
@@ -77,21 +78,21 @@ public class FOMDateTime extends FOMElem
         super(qname, parent, factory, builder);
     }
 
-    public org.apache.abdera2.common.date.DateTime getValue() {
+    public org.joda.time.DateTime getValue() {
         if (value == null) {
             String v = getText();
             if (v != null) {
-                value = org.apache.abdera2.common.date.DateTime.valueOf(v);
+                value = org.joda.time.DateTime.parse(v);
             }
         }
         return value;
     }
 
-    public DateTime setValue(org.apache.abdera2.common.date.DateTime dateTime) {
+    public DateTime setValue(org.joda.time.DateTime dateTime) {
         complete();
         value = null;
         if (dateTime != null)
-            ((Element)this).setText(dateTime.getValue());
+            ((Element)this).setText(DateTimes.format(dateTime));
         else
             _removeAllChildren();
         return this;
@@ -101,7 +102,7 @@ public class FOMDateTime extends FOMElem
         complete();
         value = null;
         if (date != null)
-            ((Element)this).setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+            ((Element)this).setText(DateTimes.format(date));
         else
             _removeAllChildren();
         return this;
@@ -111,7 +112,7 @@ public class FOMDateTime extends FOMElem
         complete();
         value = null;
         if (date != null)
-            ((Element)this).setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+            ((Element)this).setText(DateTimes.format(date));
         else
             _removeAllChildren();
         return this;
@@ -120,7 +121,7 @@ public class FOMDateTime extends FOMElem
     public DateTime setTime(long date) {
         complete();
         value = null;
-        ((Element)this).setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+        ((Element)this).setText(DateTimes.format(date));
         return this;
     }
 
@@ -128,30 +129,30 @@ public class FOMDateTime extends FOMElem
         complete();
         value = null;
         if (date != null)
-            ((Element)this).setText(org.apache.abdera2.common.date.DateTime.valueOf(date).getValue());
+            ((Element)this).setText(DateTimes.format(date));
         else
             _removeAllChildren();
         return this;
     }
 
     public Date getDate() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getDate() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? ad.toDate() : null;
     }
 
     public Calendar getCalendar() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getCalendar() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? ad.toCalendar(Locale.getDefault()) : null;
     }
 
     public long getTime() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getTime() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? ad.getMillis() : null;
     }
 
     public String getString() {
-        org.apache.abdera2.common.date.DateTime ad = getValue();
-        return (ad != null) ? ad.getValue() : null;
+        org.joda.time.DateTime ad = getValue();
+        return (ad != null) ? DateTimes.format(ad) : null;
     }
 
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java Wed Oct 19 22:33:04 2011
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -52,6 +51,7 @@ import org.apache.axiom.om.OMXMLParserWr
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.llom.OMDocumentImpl;
 import org.apache.axiom.om.util.StAXUtils;
+import org.joda.time.DateTime;
 
 @SuppressWarnings("unchecked")
 public class FOMDocument<T extends Element> extends OMDocumentImpl implements Document<T> {
@@ -59,7 +59,7 @@ public class FOMDocument<T extends Eleme
     private static final long serialVersionUID = -3255339511063344662L;
     protected IRI base = null;
     protected MimeType contentType = null;
-    protected Date lastModified = null;
+    protected DateTime lastModified = null;
     protected EntityTag etag = null;
     protected String language = null;
     protected String slug = null;
@@ -180,11 +180,11 @@ public class FOMDocument<T extends Eleme
         return this;
     }
 
-    public Date getLastModified() {
+    public DateTime getLastModified() {
         return this.lastModified;
     }
 
-    public Document<T> setLastModified(Date lastModified) {
+    public Document<T> setLastModified(DateTime lastModified) {
         this.lastModified = lastModified;
         return this;
     }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMElement.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMElement.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMElement.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMElement.java Wed Oct 19 22:33:04 2011
@@ -75,7 +75,7 @@ import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.llom.OMElementImpl;
 
-@SuppressWarnings("unchecked")
+@SuppressWarnings({"unchecked","rawtypes"})
 public class FOMElement extends OMElementImpl implements Element, OMElement, Constants {
 
     private static final long serialVersionUID = 8024257594220911953L;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMEntry.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMEntry.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMEntry.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMEntry.java Wed Oct 19 22:33:04 2011
@@ -55,7 +55,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
-@SuppressWarnings("deprecation")
+@SuppressWarnings({"deprecation","rawtypes"})
 public class FOMEntry extends FOMExtensibleElement implements Entry {
 
     private static final long serialVersionUID = 1L;
@@ -112,9 +112,11 @@ public class FOMEntry extends FOMExtensi
       if (is_empty(list)) {
         Source source = getSource();
         if (source == null) {
-          Element parent = getParentElement();
-          if (parent != null && parent instanceof Source)
-            source = (Source) parent;
+          if (this.getParent() instanceof Element) {
+            Element parent = getParentElement();
+            if (parent != null && parent instanceof Source)
+              source = (Source) parent;
+          }
         }
         if (source != null)
           list = source.getAuthors();
@@ -527,12 +529,12 @@ public class FOMEntry extends FOMExtensi
         return this;
     }
 
-    public Date getPublished() {
+    public org.joda.time.DateTime getPublished() {
         DateTime dte = getPublishedElement();
-        return (dte != null) ? dte.getDate() : null;
+        return (dte != null) ? dte.getValue() : null;
     }
 
-    private DateTime setPublished(org.apache.abdera2.common.date.DateTime value) {
+    public DateTime setPublished(org.joda.time.DateTime value) {
         complete();
         if (value == null) {
             _removeChildren(PUBLISHED, false);
@@ -550,12 +552,12 @@ public class FOMEntry extends FOMExtensi
         }
     }
 
-    public DateTime setPublished(Date value) {
-        return setPublished((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+    public DateTime setPublished(java.util.Date date) {
+        return setPublished(new org.joda.time.DateTime(date));
     }
 
     public DateTime setPublished(String value) {
-        return setPublished((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setPublished((value != null) ? new org.joda.time.DateTime(value) : null);
     }
 
     public Text getRightsElement() {
@@ -728,12 +730,12 @@ public class FOMEntry extends FOMExtensi
         return this;
     }
 
-    public Date getUpdated() {
+    public org.joda.time.DateTime getUpdated() {
         DateTime dte = getUpdatedElement();
-        return (dte != null) ? dte.getDate() : null;
+        return (dte != null) ? dte.getValue() : null;
     }
 
-    private DateTime setUpdated(org.apache.abdera2.common.date.DateTime value) {
+    public DateTime setUpdated(org.joda.time.DateTime value) {
         complete();
         if (value == null) {
             _removeChildren(UPDATED, false);
@@ -752,11 +754,11 @@ public class FOMEntry extends FOMExtensi
     }
 
     public DateTime setUpdated(Date value) {
-        return setUpdated((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setUpdated(new org.joda.time.DateTime(value));
     }
 
     public DateTime setUpdated(String value) {
-        return setUpdated((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setUpdated((value != null) ? new org.joda.time.DateTime(value) : null);
     }
 
     public DateTime getEditedElement() {
@@ -776,12 +778,12 @@ public class FOMEntry extends FOMExtensi
             _removeChildren(EDITED, false);
     }
 
-    public Date getEdited() {
+    public org.joda.time.DateTime getEdited() {
         DateTime dte = getEditedElement();
-        return (dte != null) ? dte.getDate() : null;
+        return (dte != null) ? dte.getValue() : null;
     }
 
-    private DateTime setEdited(org.apache.abdera2.common.date.DateTime value) {
+    public DateTime setEdited(org.joda.time.DateTime value) {
         complete();
         declareNamespace(APP_NS, "app");
         if (value == null) {
@@ -802,11 +804,11 @@ public class FOMEntry extends FOMExtensi
     }
 
     public DateTime setEdited(Date value) {
-        return setEdited((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setEdited(new org.joda.time.DateTime(value));
     }
 
     public DateTime setEdited(String value) {
-        return setUpdated((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setUpdated((value != null) ? new org.joda.time.DateTime(value) : null);
     }
 
     public Control getControl(boolean create) {
@@ -995,4 +997,16 @@ public class FOMEntry extends FOMExtensi
     public List<Link> getLinks(Selector selector) {
       return _getChildrenAsSet(LINK,selector);
     }
+
+    public DateTime setPublishedNow() {
+      return setPublished(org.joda.time.DateTime.now());
+    }
+
+    public DateTime setUpdatedNow() {
+      return setUpdated(org.joda.time.DateTime.now());
+    }
+
+    public DateTime setEditedNow() {
+      return setEdited(org.joda.time.DateTime.now());
+    }
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMExtensibleElement.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMExtensibleElement.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMExtensibleElement.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMExtensibleElement.java Wed Oct 19 22:33:04 2011
@@ -36,7 +36,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
-@SuppressWarnings("unchecked")
+@SuppressWarnings({"unchecked","rawtypes"})
 public class FOMExtensibleElement extends FOMElement implements ExtensibleElement {
 
     private static final long serialVersionUID = -1652430686161947531L;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMFeed.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMFeed.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMFeed.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMFeed.java Wed Oct 19 22:33:04 2011
@@ -19,7 +19,6 @@ package org.apache.abdera2.parser.axiom;
 
 import java.util.Arrays;
 import java.util.Comparator;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -39,6 +38,7 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
+@SuppressWarnings("rawtypes")
 public class FOMFeed extends FOMSource implements Feed {
 
     private static final long serialVersionUID = 4552921210185524535L;
@@ -168,8 +168,8 @@ public class FOMFeed extends FOMSource i
         }
 
         public int compare(Entry o1, Entry o2) {
-            Date d1 = o1.getEdited();
-            Date d2 = o2.getEdited();
+            org.joda.time.DateTime d1 = o1.getEdited();
+            org.joda.time.DateTime d2 = o2.getEdited();
             if (d1 == null)
                 d1 = o1.getUpdated();
             if (d2 == null)
@@ -193,8 +193,8 @@ public class FOMFeed extends FOMSource i
         }
 
         public int compare(Entry o1, Entry o2) {
-            Date d1 = o1.getUpdated();
-            Date d2 = o2.getUpdated();
+          org.joda.time.DateTime d1 = o1.getUpdated();
+          org.joda.time.DateTime d2 = o2.getUpdated();
             if (d1 == null && d2 == null)
                 return 0;
             if (d1 == null && d2 != null)

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMService.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMService.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMService.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMService.java Wed Oct 19 22:33:04 2011
@@ -35,7 +35,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
-@SuppressWarnings("deprecation")
+@SuppressWarnings({"deprecation","rawtypes"})
 public class FOMService extends FOMExtensibleElement implements Service {
 
     private static final long serialVersionUID = 7982751563668891240L;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMSource.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMSource.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMSource.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMSource.java Wed Oct 19 22:33:04 2011
@@ -47,7 +47,7 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
-@SuppressWarnings( {"unchecked", "deprecation"})
+@SuppressWarnings( {"unchecked", "deprecation", "rawtypes"})
 public class FOMSource extends FOMExtensibleElement implements Source {
 
     private static final long serialVersionUID = 9153127297531238021L;
@@ -432,12 +432,12 @@ public class FOMSource extends FOMExtens
         return (dte != null) ? dte.getString() : null;
     }
 
-    public Date getUpdated() {
+    public org.joda.time.DateTime getUpdated() {
         DateTime dte = getUpdatedElement();
-        return (dte != null) ? dte.getDate() : null;
+        return (dte != null) ? dte.getValue() : null;
     }
 
-    private DateTime setUpdated(org.apache.abdera2.common.date.DateTime value) {
+    public DateTime setUpdated(org.joda.time.DateTime value) {
         complete();
         if (value == null) {
             _removeChildren(UPDATED, false);
@@ -456,11 +456,11 @@ public class FOMSource extends FOMExtens
     }
 
     public DateTime setUpdated(Date value) {
-        return setUpdated((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setUpdated((value != null) ? new org.joda.time.DateTime(value) : null);
     }
 
     public DateTime setUpdated(String value) {
-        return setUpdated((value != null) ? org.apache.abdera2.common.date.DateTime.valueOf(value) : null);
+        return setUpdated((value != null) ? new org.joda.time.DateTime(value) : null);
     }
 
     public Generator getGenerator() {
@@ -657,4 +657,8 @@ public class FOMSource extends FOMExtens
       return _getChildrenAsSet(AUTHOR,selector);
     }
 
+    public DateTime setUpdatedNow() {
+      return setUpdated(org.joda.time.DateTime.now());
+    }
+
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMWorkspace.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMWorkspace.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMWorkspace.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMWorkspace.java Wed Oct 19 22:33:04 2011
@@ -35,7 +35,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 
-@SuppressWarnings("deprecation")
+@SuppressWarnings({"deprecation","rawtypes"})
 public class FOMWorkspace extends FOMExtensibleElement implements Workspace {
 
     private static final long serialVersionUID = -421749865550509424L;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractParseFilter.java Wed Oct 19 22:33:04 2011
@@ -17,43 +17,108 @@
  */
 package org.apache.abdera2.parser.filter;
 
+import javax.xml.namespace.QName;
 
-public abstract class AbstractParseFilter implements ParseFilter {
+import org.apache.abdera2.common.misc.ExceptionHelper;
+import com.google.common.base.Supplier;
 
+@SuppressWarnings("unchecked")
+public abstract class AbstractParseFilter 
+  implements ParseFilter {
+
+  public static abstract class Builder<E extends ParseFilter> implements Supplier<E> {
+    
+    protected byte flags = 0;
+    private Class<? extends UnacceptableException> _throw;
+
+    public <X extends Builder<E>>X throwOnUnacceptable() {
+      return (X)throwOnUnacceptable(UnacceptableException.class);
+    }
+    
+    public <X extends Builder<E>>X throwOnUnacceptable(Class<? extends UnacceptableException> error) {
+      this._throw = error;
+      return (X)this;
+    }
+    
+    private void toggle(boolean s, byte flag) {
+      if (s)
+          flags |= flag;
+      else
+          flags &= ~flag;
+    }
+    
+    protected Builder() {
+      withDefaults();
+    }
+    
+    public <X extends Builder<E>>X withDefaults() {
+      return (X)ignoreComments()
+            .ignoreWhitespace()
+            .ignoreProcessingInstructions();
+    }
+    
+    public <X extends Builder<E>>X withoutDefaults() {
+      toggle(false, COMMENTS);
+      toggle(false, WHITESPACE);
+      toggle(false, PI);
+      return (X)this;
+    }
+    
+    public <X extends Builder<E>>X ignoreComments() {
+      toggle(true, COMMENTS);
+      return (X)this;
+    }
+
+    public <X extends Builder<E>>X ignoreWhitespace() {
+      toggle(true, (byte)WHITESPACE);
+      return (X)this;
+    }
+
+    public <X extends Builder<E>>X ignoreProcessingInstructions() {
+      toggle(true, (byte)PI);
+      return (X)this;
+    }
+    
+  }
+  
     private static final long serialVersionUID = -1866308276050148524L;
 
     private static final byte COMMENTS = 1;
     private static final byte WHITESPACE = 2;
     private static final byte PI = 4;
 
-    protected byte flags = 0;
+    protected final byte flags;
+    protected final Class<? extends UnacceptableException> _throw;
 
-    private void toggle(boolean s, byte flag) {
-        if (s)
-            flags |= flag;
-        else
-            flags &= ~flag;
+    protected AbstractParseFilter(Builder<?> builder) {
+      this.flags = builder.flags;
+      this._throw = builder._throw;
+    }
+    
+    protected boolean checkThrow(
+      boolean answer, 
+      QName element, 
+      QName attribute) {
+      if (!answer && _throw != null) {
+        try {
+          throw _throw
+            .getConstructor(
+              QName.class,
+              QName.class)
+            .newInstance(
+              element,
+              attribute);
+        } catch (Throwable e) {
+          throw ExceptionHelper.propogate(e);
+        }
+      }
+      return answer;
     }
-
+    
     private boolean check(byte flag) {
         return (flags & flag) == flag;
     }
 
-    public ParseFilter setIgnoreComments(boolean ignore) {
-        toggle(ignore, COMMENTS);
-        return this;
-    }
-
-    public ParseFilter setIgnoreWhitespace(boolean ignore) {
-        toggle(ignore, (byte)WHITESPACE);
-        return this;
-    }
-
-    public ParseFilter setIgnoreProcessingInstructions(boolean ignore) {
-        toggle(ignore, (byte)PI);
-        return this;
-    }
-
     public boolean getIgnoreComments() {
         return check(COMMENTS);
     }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractSetParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractSetParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractSetParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/AbstractSetParseFilter.java Wed Oct 19 22:33:04 2011
@@ -38,42 +38,59 @@ import javax.xml.namespace.QName;
  */
 public abstract class AbstractSetParseFilter 
   extends AbstractParseFilter 
-  implements Cloneable, SetParseFilter {
+  implements Cloneable {
 
+  @SuppressWarnings("unchecked")
+    public static abstract class Builder<E extends AbstractSetParseFilter> 
+      extends AbstractParseFilter.Builder<E> {
+      
+      private transient Set<QName> 
+        qnames = new HashSet<QName>();
+      private transient Map<QName, Set<QName>> 
+        attributes = new HashMap<QName, Set<QName>>();     
+      
+      public <X extends Builder<E>>X add(QName qname) {
+        if (!qnames.contains(qname))
+          qnames.add(qname);
+        return (X)this;
+      }
+      
+      public <X extends Builder<E>>X add(QName parent, QName attribute) {
+        if (attributes.containsKey(parent)) {
+            Set<QName> attrs = attributes.get(parent);
+            if (!attrs.contains(attribute))
+                attrs.add(attribute);
+        } else {
+            Set<QName> attrs = new HashSet<QName>();
+            attrs.add(attribute);
+            attributes.put(parent, attrs);
+        }
+        return (X)this;
+      }
+      
+    }
+  
     private static final long serialVersionUID = -758691949740569208L;
 
-    private transient Set<QName> 
+    private transient final Set<QName> 
       qnames = new HashSet<QName>();
-    private transient Map<QName, Set<QName>> 
+    private transient final Map<QName, Set<QName>> 
       attributes = new HashMap<QName, Set<QName>>();
 
+    protected AbstractSetParseFilter(Builder<?> builder) {
+      super(builder);
+      this.qnames.addAll(builder.qnames);
+      this.attributes.putAll(builder.attributes);
+    }
+    
     public Object clone() throws CloneNotSupportedException {
         return super.clone();
     }
 
-    public AbstractSetParseFilter add(QName qname) {
-        if (!contains(qname))
-          qnames.add(qname);
-        return this;
-    }
-
     public boolean contains(QName qname) {
       return qnames.contains(qname);
     }
 
-    public AbstractSetParseFilter add(QName parent, QName attribute) {
-        if (attributes.containsKey(parent)) {
-            Set<QName> attrs = attributes.get(parent);
-            if (!attrs.contains(attribute))
-                attrs.add(attribute);
-        } else {
-            Set<QName> attrs = new HashSet<QName>();
-            attrs.add(attribute);
-            attributes.put(parent, attrs);
-        }
-        return this;
-    }
-
     public boolean contains(QName qname, QName attribute) {
         if (attributes.containsKey(qname)) {
             Set<QName> attrs = attributes.get(qname);
@@ -87,6 +104,7 @@ public abstract class AbstractSetParseFi
 
     public abstract boolean acceptable(QName qname, QName attribute);
 
+    
     private void writeObject(ObjectOutputStream out) throws IOException {
         out.defaultWriteObject();
 
@@ -116,14 +134,14 @@ public abstract class AbstractSetParseFi
 
         // qnames field
         final int qnamesSize = in.readInt();
-        qnames = new HashSet<QName>(qnamesSize);
+        //qnames = new HashSet<QName>(qnamesSize);
         for (int i = 0; i < qnamesSize; i++) {
             qnames.add((QName)in.readObject());
         }
 
         // attributes field
         final int attributesSize = in.readInt();
-        attributes = new HashMap<QName, Set<QName>>();
+        //attributes = new HashMap<QName, Set<QName>>();
         for (int i = 0; i < attributesSize; i++) {
             final QName k = (QName)in.readObject();
             final int vSize = in.readInt();

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/BlackListParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/BlackListParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/BlackListParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/BlackListParseFilter.java Wed Oct 19 22:33:04 2011
@@ -24,15 +24,30 @@ import javax.xml.namespace.QName;
  * based filtering is problematic, at best, due largely to the fact that it's easier to define safe subsets of elements
  * than it is to define unsafe subsets.
  */
-public class BlackListParseFilter extends AbstractSetParseFilter {
+public class BlackListParseFilter 
+  extends AbstractSetParseFilter {
 
+  public static Builder make() {
+    return new Builder();
+  }
+  
+  public static class Builder extends AbstractSetParseFilter.Builder<BlackListParseFilter> {
+    public BlackListParseFilter get() {
+      return new BlackListParseFilter(this);
+    } 
+  }
+  
     private static final long serialVersionUID = -8428373486568649179L;
 
+    protected BlackListParseFilter(Builder builder) {
+      super(builder);
+    }
+    
     public boolean acceptable(QName qname) {
-        return !contains(qname);
+        return checkThrow(!contains(qname),qname,null);
     }
 
     public boolean acceptable(QName qname, QName attribute) {
-        return !contains(qname, attribute);
+        return checkThrow(!contains(qname, attribute),qname,attribute);
     }
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/CompoundParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/CompoundParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/CompoundParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/CompoundParseFilter.java Wed Oct 19 22:33:04 2011
@@ -17,6 +17,9 @@
  */
 package org.apache.abdera2.parser.filter;
 
+import java.util.LinkedHashSet;
+import java.util.Set;
+
 import javax.xml.namespace.QName;
 
 
@@ -63,20 +66,81 @@ public class CompoundParseFilter 
             return 0;
         }
     };
-
-    protected final Condition condition;
-    protected final ParseFilter[] filters;
-
-    public CompoundParseFilter(Condition condition, ParseFilter... filters) {
-        this.filters = filters;
+    
+    public static ParseFilter acceptableToAll(ParseFilter... filters) {
+      return makeAcceptableToAll().filters(filters).get();
+    }
+    
+    public static ParseFilter acceptableToAny(ParseFilter... filters) {
+      return makeAcceptableToAny().filters(filters).get();
+    }
+    
+    public static ParseFilter unacceptableToAll(ParseFilter... filters) {
+      return makeUnacceptableToAll().filters(filters).get();
+    }
+    
+    public static ParseFilter unacceptableToAny(ParseFilter... filters) {
+      return makeUnacceptableToAny().filters(filters).get();
+    }
+    
+    public static Builder makeAcceptableToAll() {
+      return make().condition(Condition.ACCEPTABLE_TO_ALL);
+    }
+    
+    public static Builder makeAcceptableToAny() {
+      return make().condition(Condition.ACCEPTABLE_TO_ANY);
+    }
+    
+    public static Builder makeUnacceptableToAll() {
+      return make().condition(Condition.UNACCEPTABLE_TO_ALL);
+    }
+    
+    public static Builder makeUnacceptableToAny() {
+      return make().condition(Condition.UNACCEPTABLE_TO_ANY);
+    }
+    
+    public static Builder make() {
+      return new Builder();
+    }
+    
+    public static class Builder extends AbstractParseFilter.Builder<CompoundParseFilter> {
+
+      private Condition condition;
+      private final Set<ParseFilter> filters = 
+        new LinkedHashSet<ParseFilter>();
+      
+      public CompoundParseFilter get() {
+        return new CompoundParseFilter(this);
+      }
+      
+      public Builder condition(Condition condition) {
         this.condition = condition;
+        return this;
+      }
+      
+      public Builder filter(ParseFilter filter) {
+        this.filters.add(filter);
+        return this;
+      }
+      
+      public Builder filters(ParseFilter... filters) {
+        for (ParseFilter filter : filters)
+          filter(filter);
+        return this;
+      }
     }
 
-    public CompoundParseFilter(ParseFilter... filters) {
-        this(Condition.ACCEPTABLE_TO_ANY, filters);
+    protected final Condition condition;
+    protected final Set<ParseFilter> filters = 
+      new LinkedHashSet<ParseFilter>();
+
+    protected CompoundParseFilter(Builder builder) {
+      super(builder);
+      this.condition = builder.condition;
+      this.filters.addAll(builder.filters);
     }
 
-    private ParseFilter[] getFilters() {
+    private Iterable<ParseFilter> getFilters() {
         return filters;
     }
 
@@ -86,7 +150,7 @@ public class CompoundParseFilter 
                 case 1:
                     return true;
                 case -1:
-                    return false;
+                    return checkThrow(false,qname,null);
             }
         }
         return true;
@@ -98,7 +162,7 @@ public class CompoundParseFilter 
                 case 1:
                     return true;
                 case -1:
-                    return false;
+                    return checkThrow(false,qname,attribute);
             }
         }
         return true;

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/NonOpParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/NonOpParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/NonOpParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/NonOpParseFilter.java Wed Oct 19 22:33:04 2011
@@ -19,10 +19,16 @@ package org.apache.abdera2.parser.filter
 
 import javax.xml.namespace.QName;
 
-public class NonOpParseFilter extends AbstractParseFilter {
-
+public final class NonOpParseFilter
+  implements ParseFilter {
+  
+    public static final ParseFilter INSTANCE = 
+      new NonOpParseFilter();
+  
     private static final long serialVersionUID = -1895875728388522456L;
 
+    private NonOpParseFilter() {}
+    
     public boolean acceptable(QName qname) {
         return true;
     }
@@ -31,4 +37,19 @@ public class NonOpParseFilter extends Ab
         return true;
     }
 
+    public boolean getIgnoreComments() {
+      return false;
+    }
+
+    public boolean getIgnoreWhitespace() {
+      return false;
+    }
+
+    public boolean getIgnoreProcessingInstructions() {
+      return false;
+    }
+
+    public Object clone() throws CloneNotSupportedException {
+      return this;
+    }
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/ParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/ParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/ParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/ParseFilter.java Wed Oct 19 22:33:04 2011
@@ -57,18 +57,4 @@ public interface ParseFilter extends Clo
      */
     boolean getIgnoreProcessingInstructions();
 
-    /**
-     * True if the parser should ignore comments
-     */
-    ParseFilter setIgnoreComments(boolean ignore);
-
-    /**
-     * True if the parser should ignore insignificant whitespace
-     */
-    ParseFilter setIgnoreWhitespace(boolean ignore);
-
-    /**
-     * True if the parser should ignore processing instructions
-     */
-    ParseFilter setIgnoreProcessingInstructions(boolean ignore);
 }

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/SafeContentWhiteListParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/SafeContentWhiteListParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/SafeContentWhiteListParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/SafeContentWhiteListParseFilter.java Wed Oct 19 22:33:04 2011
@@ -25,6 +25,18 @@ public class SafeContentWhiteListParseFi
     extends AbstractParseFilter 
     implements ParseFilter {
 
+    public static Builder make() {
+      return new Builder();
+    }
+  
+    public static class Builder extends AbstractParseFilter.Builder<SafeContentWhiteListParseFilter> {
+
+      public SafeContentWhiteListParseFilter get() {
+        return new SafeContentWhiteListParseFilter(this);
+      }
+      
+    }
+  
     private static final long serialVersionUID = -4802312485715572721L;
 
     private static enum xhtml_elements {
@@ -58,6 +70,10 @@ public class SafeContentWhiteListParseFi
             return v.toLowerCase();
         }
     };
+    
+    protected SafeContentWhiteListParseFilter(Builder builder) {
+      super(builder);
+    }
 
     public boolean acceptable(QName qname) {
         if (qname.getNamespaceURI().equals(Constants.XHTML_NS)) {
@@ -66,7 +82,7 @@ public class SafeContentWhiteListParseFi
                 return true;
             } catch (Exception e) {
             }
-            return false;
+            return checkThrow(false,qname,null);
         } else {
             return true;
         }
@@ -79,7 +95,7 @@ public class SafeContentWhiteListParseFi
                 return true;
             } catch (Exception e) {
             }
-            return false;
+            return checkThrow(false,qname,attribute);
         } else {
             return true;
         }

Added: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/UnacceptableException.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/UnacceptableException.java?rev=1186541&view=auto
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/UnacceptableException.java (added)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/UnacceptableException.java Wed Oct 19 22:33:04 2011
@@ -0,0 +1,71 @@
+package org.apache.abdera2.parser.filter;
+
+import javax.xml.namespace.QName;
+
+public class UnacceptableException extends RuntimeException {
+
+  private static final long serialVersionUID = -6923049484196141770L;
+
+  private final QName element;
+  private final QName attribute;
+  
+  protected UnacceptableException(QName element, QName attribute) {
+    super(message(element,attribute));
+    this.element = element;
+    this.attribute = attribute;
+  }
+
+  public QName getElement() {
+    return element;
+  }
+  
+  public QName getAttribute() {
+    return attribute;
+  }
+  
+  private static String message(QName element, QName attribute) {
+    if (element == null && attribute == null)
+      return "Unacceptable element";
+    else if (attribute == null)
+      return String.format(
+        "Unacceptable element [%s]", 
+        element.toString());
+    else 
+      return String.format(
+        "Unacceptable element [%s,%s]", 
+        element.toString(), 
+        attribute.toString());
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((attribute == null) ? 0 : attribute.hashCode());
+    result = prime * result + ((element == null) ? 0 : element.hashCode());
+    return result;
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    UnacceptableException other = (UnacceptableException) obj;
+    if (attribute == null) {
+      if (other.attribute != null)
+        return false;
+    } else if (!attribute.equals(other.attribute))
+      return false;
+    if (element == null) {
+      if (other.element != null)
+        return false;
+    } else if (!element.equals(other.element))
+      return false;
+    return true;
+  }
+  
+}

Propchange: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/UnacceptableException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/WhiteListParseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/WhiteListParseFilter.java?rev=1186541&r1=1186540&r2=1186541&view=diff
==============================================================================
--- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/WhiteListParseFilter.java (original)
+++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/filter/WhiteListParseFilter.java Wed Oct 19 22:33:04 2011
@@ -24,30 +24,37 @@ import javax.xml.namespace.QName;
  */
 public class WhiteListParseFilter extends AbstractSetParseFilter {
 
+  public static Builder make() {
+    return new Builder();
+  }
+  
+  public static class Builder extends AbstractSetParseFilter.Builder<WhiteListParseFilter> {
+    private boolean listAttributesExplicitly;
+    public Builder listAttributesExplicitly() {
+      this.listAttributesExplicitly = true;
+      return this;
+    }
+    public WhiteListParseFilter get() {
+      return new WhiteListParseFilter(this);
+    } 
+  }
+  
     private static final long serialVersionUID = -2126524829459798481L;
     private final boolean listAttributesExplicitly;
 
-    public WhiteListParseFilter() {
-        this(false);
-    }
-
-    /**
-     * If listAttributesExplicity == true, attributes MUST be whitelisted independently of the elements on which they
-     * appear, otherwise, all attributes will automatically be considered acceptable if the containing element is
-     * considered acceptable.
-     */
-    public WhiteListParseFilter(boolean listAttributesExplicitly) {
-        this.listAttributesExplicitly = listAttributesExplicitly;
+    protected WhiteListParseFilter(Builder builder) {
+        super(builder);
+        this.listAttributesExplicitly = builder.listAttributesExplicitly;
     }
 
     public boolean acceptable(QName qname) {
-        return contains(qname);
+        return checkThrow(contains(qname),qname,null);
     }
 
     public boolean acceptable(QName qname, QName attribute) {
-        return (listAttributesExplicitly) ? 
+        return checkThrow((listAttributesExplicitly) ? 
             contains(qname, attribute) && acceptable(qname) : 
-            acceptable(qname);
+            acceptable(qname),qname,attribute);
     }
 
 }