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/11/10 22:48:48 UTC

svn commit: r1200583 [3/5] - in /abdera/abdera2: activities/src/main/java/org/apache/abdera2/activities/client/ activities/src/main/java/org/apache/abdera2/activities/extra/ activities/src/main/java/org/apache/abdera2/activities/io/gson/ activities/src...

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AudioObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AudioObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AudioObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AudioObject.java Thu Nov 10 21:48:45 2011
@@ -17,59 +17,70 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.activities.model.MediaLink;
 import org.apache.abdera2.common.anno.Name;
 
-@Name("audio")
 public class AudioObject 
   extends ASObject {
 
-  private static final long serialVersionUID = 3686825866815403406L;
   public static final String EMBEDCODE = "embedCode";
   public static final String STREAM = "stream";
   
-  public AudioObject() { }
+  public AudioObject(Map<String,Object> map) { 
+    super(map,AudioBuilder.class,AudioObject.class);
+  }
   
-  public AudioObject(String displayName) {
-    setDisplayName(displayName);
+  public <X extends AudioObject, M extends Builder<X,M>>AudioObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
   
   public String getEmbedCode() {
     return getProperty(EMBEDCODE);
   }
-  
-  public void setEmbedCode(String embedCode) {
-    setProperty(EMBEDCODE, embedCode);
-  }
-  
+
   public MediaLink getStream() {
     return getProperty(STREAM);
   }
-  
-  public void setStream(MediaLink stream) {
-    setProperty(STREAM, stream);
-  }
 
-  public static <T extends AudioObject>AudioObjectGenerator<T> makeAudio() {
-    return new AudioObjectGenerator<T>();
+  public static AudioBuilder makeAudio() {
+    return new AudioBuilder("audio");
+  }
+  
+  @Name("audio")
+  public static final class AudioBuilder extends Builder<AudioObject,AudioBuilder> {
+    public AudioBuilder() {
+      super(AudioObject.class,AudioBuilder.class);
+    }
+    public AudioBuilder(Map<String, Object> map) {
+      super(map, AudioObject.class,AudioBuilder.class);
+    }
+    public AudioBuilder(String objectType) {
+      super(objectType,AudioObject.class,AudioBuilder.class);
+    }
   }
   
   @SuppressWarnings("unchecked")
-  public static class AudioObjectGenerator<T extends AudioObject> extends ASObjectGenerator<T> {
-    public AudioObjectGenerator() {
-      super((Class<? extends T>) AudioObject.class);
-    }
-    public AudioObjectGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends AudioObjectGenerator<T>>X embedCode(String code) {
-      item.setEmbedCode(code);
-      return (X)this;
-    }
-    public <X extends AudioObjectGenerator<T>>X stream(MediaLink stream) {
-      item.setStream(stream);
-      return (X)this;
+  public static abstract class Builder<X extends AudioObject,M extends Builder<X,M>>
+    extends ASObject.Builder<X,M> {
+    public Builder(Class<X> _class,Class<M> _builder) { 
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X> _class,Class<M> _builder) {
+      super(objectType,_class,_builder);
+    }
+    public Builder(Map<String,Object> map,Class<X> _class,Class<M> _builder) {
+      super(map,_class,_builder);
+    }
+    public M embedCode(String code) {
+      set(EMBEDCODE,code);
+      return (M)this;
+    }
+    public M stream(MediaLink stream) {
+      set(STREAM,stream);
+      return (M)this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BadgeObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BadgeObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BadgeObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BadgeObject.java Thu Nov 10 21:48:45 2011
@@ -17,32 +17,37 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 
-@Name("badge")
 public class BadgeObject 
   extends ASObject {
 
-  private static final long serialVersionUID = -3928700532413017490L;
   
-  public BadgeObject() {}
+  public static <T extends BadgeObject>Builder makeBadge() {
+    return new Builder("badge");
+  }
   
-  public BadgeObject(String displayName) {
-    setDisplayName(displayName);
+  @Name("badge")
+  public static class Builder extends ASObject.Builder<BadgeObject,Builder>{
+    public Builder() {
+      super(BadgeObject.class,Builder.class);
+    }
+    public Builder(String objectType) {
+      super(objectType,BadgeObject.class,Builder.class);
+    }
+    public Builder(Map<String,Object> map) {
+      super(map,BadgeObject.class,Builder.class);
+    }
   }
   
-  public static <T extends BadgeObject>BadgeObjectGenerator<T> makeBadge() {
-    return new BadgeObjectGenerator<T>();
+  public BadgeObject(Map<String,Object> map) {
+    super(map,Builder.class,BadgeObject.class);
   }
   
-  public static class BadgeObjectGenerator<T extends BadgeObject> extends ASObjectGenerator<T> {
-    @SuppressWarnings("unchecked")
-    public BadgeObjectGenerator() {
-      super((Class<? extends T>) BadgeObject.class);
-    }
-    public BadgeObjectGenerator(Class<? extends T> _class) {
-      super(_class);
-    }
+  public <X extends ASObject, M extends ASObject.Builder<X,M>>BadgeObject(Map<String,Object> map, Class<M> _class, Class<X> _obj) {
+    super(map,_class,_obj);
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java Thu Nov 10 21:48:45 2011
@@ -5,6 +5,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.Map;
 
 import javax.activation.DataHandler;
 import javax.activation.MimeType;
@@ -34,103 +35,16 @@ import org.apache.commons.codec.binary.B
  * Applications need to be careful about which content types they 
  * will allow. 
  */
-@Name("binary")
-@Properties({
-  @Property(name="mimeType",to=MimeType.class)
-})
 public class BinaryObject extends FileObject {
   
-  private static final long serialVersionUID = 5120608845229587281L;
-
-  public BinaryObject() {
-    setMimeType("application/octet-stream");
+  public BinaryObject(Map<String,Object> map) {
+    super(map,BinaryBuilder.class,BinaryObject.class);
   }
   
-  public BinaryObject(String displayName) {
-    this();
-    setDisplayName(displayName);
+  public <X extends BinaryObject, M extends Builder<X,M>>BinaryObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
     
-  public void setData(DataHandler data, CompressionCodec... comps) throws IOException {
-    setData(data,(Hasher)null,comps);
-  }
-  
-  public void setData(byte[] data, Hasher hash, CompressionCodec... comps) throws IOException {
-    setData(new ByteArrayInputStream(data),hash,comps);
-  }
-  
-  /**
-   * Set the Content and the MimeType from the DatHandler. 
-   * This method defers to the setContent(InputStream) method
-   * by passing it the InputStream retrieved from the DataHandler.
-   * That means it currently blocks while reading, consuming, and
-   * encoding the InputStream. TODO: The better approach would be
-   * to simple store the DataHandler in the exts table directly
-   * and use a custom TypeAdapter for the BinaryObject to read and
-   * consume the DataHandler during the actual Serialization.
-   */
-  public void setData(DataHandler data,Hasher hash, CompressionCodec... comps) throws IOException {
-    setData(data.getInputStream(),hash,comps);
-    setMimeType(data.getContentType());
-  }
-  
-  public void setData(InputStream data) throws IOException {
-    setData(data,null);
-  }
-  
-  /**
-   * Set the Content as a Base64 Encoded string. Calling this 
-   * method will perform a blocking read that will consume the 
-   * InputStream and generate a Base64 Encoded String. 
-   * 
-   * If a Hasher class is provided, a hash digest for the 
-   * input data prior to encoding will be generated and 
-   * stored in a property value whose name is the value
-   * returned by Hasher.name(); e.g., HashHelper.Md5 will 
-   * add "md5":"{hex digest}" to the JSON object. 
-   * 
-   * The content may be optionally compressed prior to base64 
-   * encoding by passing in one or more CompressionCodecs. If 
-   * compression is used, a "compression" property will be added
-   * to the object whose value is a comma separated list of 
-   * the applied compression codecs in the order of application. 
-   * The getInputStream method will automatically search for the 
-   * "compression" property and attempt to automatically decompress
-   * the stream when reading.
-   * 
-   * This will also automatically set the "length" property equal 
-   * to the total number of uncompressed, unencoded octets.
-   */
-  public void setData(InputStream data, Hasher hash, CompressionCodec... comps) throws IOException {
-    ByteArrayOutputStream out = 
-      new ByteArrayOutputStream();
-    OutputStream bout = 
-      new Base64OutputStream(out,true,0,null);
-    if (comps.length > 0) {
-      bout = Compression.wrap(bout,comps);
-      String comp = Compression.describe(null, comps);
-      setProperty("compression",comp.substring(1,comp.length()-1));
-    }
-    
-    byte[] d = new byte[1024];
-    int r = -1, len = 0;
-    while((r = data.read(d)) > -1) { 
-      len += r;
-      if (hash != null)
-        hash.update(d, 0, r);
-      bout.write(d, 0, r);
-      bout.flush();
-    }
-    bout.close();
-    setProperty("length",len);
-    String c = new String(out.toByteArray(),"UTF-8");
-    super.setProperty("data",c);
-    if (hash != null)
-      setProperty(
-        hash.name(),
-        hash.get());
-  }
-  
   /**
    * Returns an InputStream that will decode the Base64 encoded 
    * content on the fly. The data is stored encoded in memory and
@@ -150,63 +64,175 @@ public class BinaryObject extends FileOb
     }
     return bin;
   }
+ 
+  public static BinaryBuilder makeBinary() {
+    return new BinaryBuilder("binary");
+  }
   
-  public void setData(byte[] data, CompressionCodec... comps) throws IOException {
-    setData(new ByteArrayInputStream(data),null,comps);
+  public static BinaryObject makeBinary(DataHandler data, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,comps).get();
   }
   
-  public void setData(byte[] data, int s, int e, CompressionCodec... comps) throws IOException {
-    setData(new ByteArrayInputStream(data,s,e),null,comps);
+  public static BinaryObject makeBinary(byte[] data, Hasher hash, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,hash,comps).get();
   }
   
-  public void setData(byte[] data, int s, int e, Hasher hash, CompressionCodec... comps) throws IOException {
-    setData(new ByteArrayInputStream(data,s,e),hash,comps);
+  public static BinaryObject makeBinary(DataHandler data,Hasher hash, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,hash,comps).get();
   }
- 
-  public static <T extends BinaryObject>BinaryObjectGenerator<T> makeBinary() {
-    return new BinaryObjectGenerator<T>();
+  
+  public static BinaryObject makeBinary(InputStream data) throws IOException {
+    return makeBinary().data(data).get();
+  }
+  
+  public static BinaryObject makeBinary(InputStream data, Hasher hash, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,hash,comps).get();
+  }
+
+  public static BinaryObject makeBinary(byte[] data, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,comps).get();
+  }
+  
+  public static BinaryObject makeBinary(byte[] data, int s, int e, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,s,e,comps).get();
+  }
+  
+  public static BinaryObject makeBinary(byte[] data, int s, int e, Hasher hash, CompressionCodec... comps) throws IOException {
+    return makeBinary().data(data,s,e,hash,comps).get();
+  }
+  
+  
+  @Name("binary")
+  @Properties({
+    @Property(name="mimeType",to=MimeType.class)
+  })
+  public static final class BinaryBuilder extends Builder<BinaryObject,BinaryBuilder> {
+    public BinaryBuilder() {
+      super(BinaryObject.class,BinaryBuilder.class);
+    }
+    public BinaryBuilder(Map<String, Object> map) {
+      super(map, BinaryObject.class,BinaryBuilder.class);
+    }
+    public BinaryBuilder(String objectType) {
+      super(objectType, BinaryObject.class,BinaryBuilder.class);
+    }
   }
   
   @SuppressWarnings("unchecked")
-  public static class BinaryObjectGenerator<T extends BinaryObject> extends FileObjectGenerator<T> {
-    public BinaryObjectGenerator() {
-      super((Class<T>) BinaryObject.class);
+  public static class Builder<X extends BinaryObject,M extends Builder<X,M>> 
+    extends FileObject.Builder<X,M> {
+    
+    boolean a;
+    
+    public Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
     }
-    public BinaryObjectGenerator(Class<T> _class) {
-      super(_class);
+    public Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
     }
-    public <X extends BinaryObjectGenerator<T>>X data(InputStream in) throws IOException {
-      item.setData(in);
-      return (X)this;
+    public Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
     }
-    public <X extends BinaryObjectGenerator<T>>X data(InputStream in, Hasher hasher, CompressionCodec... codecs) throws IOException {
-      item.setData(in,hasher,codecs);
-      return (X)this;
+    public M mimeType(MimeType mimeType) {
+      a = true;
+      return super.mimeType(mimeType);
     }
-    public <X extends BinaryObjectGenerator<T>>X data(DataHandler in, CompressionCodec... codecs) throws IOException {
-      item.setData(in,codecs);
-      return (X)this;
+    
+    public M data(DataHandler data, CompressionCodec... comps) throws IOException {
+      return data(data,(Hasher)null,comps);
+    }
+    
+    public M data(byte[] data, Hasher hash, CompressionCodec... comps) throws IOException {
+      return data(new ByteArrayInputStream(data),hash,comps);
+    }
+    
+    /**
+     * Set the Content and the MimeType from the DatHandler. 
+     * This method defers to the setContent(InputStream) method
+     * by passing it the InputStream retrieved from the DataHandler.
+     * That means it currently blocks while reading, consuming, and
+     * encoding the InputStream. TODO: The better approach would be
+     * to simple store the DataHandler in the exts table directly
+     * and use a custom TypeAdapter for the BinaryObject to read and
+     * consume the DataHandler during the actual Serialization.
+     */
+    public M data(DataHandler data,Hasher hash, CompressionCodec... comps) throws IOException {
+      data(data.getInputStream(),hash,comps);
+      if (!a) mimeType(data.getContentType());
+      return (M)this;
+    }
+    
+    public M data(InputStream data) throws IOException {
+      return data(data,null);
     }
-    public <X extends BinaryObjectGenerator<T>>X data(DataHandler in, Hasher hasher, CompressionCodec... codecs) throws IOException {
-      item.setData(in,hasher,codecs);
-      return (X)this;
+    
+    /**
+     * Set the Content as a Base64 Encoded string. Calling this 
+     * method will perform a blocking read that will consume the 
+     * InputStream and generate a Base64 Encoded String. 
+     * 
+     * If a Hasher class is provided, a hash digest for the 
+     * input data prior to encoding will be generated and 
+     * stored in a property value whose name is the value
+     * returned by Hasher.name(); e.g., HashHelper.Md5 will 
+     * add "md5":"{hex digest}" to the JSON object. 
+     * 
+     * The content may be optionally compressed prior to base64 
+     * encoding by passing in one or more CompressionCodecs. If 
+     * compression is used, a "compression" property will be added
+     * to the object whose value is a comma separated list of 
+     * the applied compression codecs in the order of application. 
+     * The getInputStream method will automatically search for the 
+     * "compression" property and attempt to automatically decompress
+     * the stream when reading.
+     * 
+     * This will also automatically set the "length" property equal 
+     * to the total number of uncompressed, unencoded octets.
+     */
+    public M data(InputStream data, Hasher hash, CompressionCodec... comps) throws IOException {
+      ByteArrayOutputStream out = 
+        new ByteArrayOutputStream();
+      OutputStream bout = 
+        new Base64OutputStream(out,true,0,null);
+      if (comps.length > 0) {
+        bout = Compression.wrap(bout,comps);
+        String comp = Compression.describe(null, comps);
+        set("compression",comp.substring(1,comp.length()-1));
+      }
+      byte[] d = new byte[1024];
+      int r = -1, len = 0;
+      while((r = data.read(d)) > -1) { 
+        len += r;
+        if (hash != null)
+          hash.update(d, 0, r);
+        bout.write(d, 0, r);
+        bout.flush();
+      }
+      bout.close();
+      set("length",len);
+      String c = new String(out.toByteArray(),"UTF-8");
+      set("data",c);
+      if (hash != null)
+        set(
+          hash.name(),
+          hash.get());
+      return (M)this;
     }
-    public <X extends BinaryObjectGenerator<T>>X data(byte[] in, CompressionCodec... codecs) throws IOException {
-      item.setData(in,codecs);
-      return (X)this;
+
+    public M data(byte[] data, CompressionCodec... comps) throws IOException {
+      return data(new ByteArrayInputStream(data),null,comps);
     }
-    public <X extends BinaryObjectGenerator<T>>X data(byte[] in, Hasher hasher, CompressionCodec... codecs) throws IOException {
-      item.setData(in,hasher,codecs);
-      return (X)this;
+    
+    public M data(byte[] data, int s, int e, CompressionCodec... comps) throws IOException {
+      return data(new ByteArrayInputStream(data,s,e),null,comps);
     }
     
-    public <X extends BinaryObjectGenerator<T>>X data(byte[] in, int s, int e, CompressionCodec... codecs) throws IOException {
-      item.setData(in,s,e,codecs);
-      return (X)this;
+    public M data(byte[] data, int s, int e, Hasher hash, CompressionCodec... comps) throws IOException {
+      return data(new ByteArrayInputStream(data,s,e),hash,comps);
     }
-    public <X extends BinaryObjectGenerator<T>>X data(byte[] in, int s, int e, Hasher hasher, CompressionCodec... codecs) throws IOException {
-      item.setData(in,s,e,hasher,codecs);
-      return (X)this;
+    
+    public void preGet() {
+      if (!a)  mimeType("application/octet-stream");
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java Thu Nov 10 21:48:45 2011
@@ -1,5 +1,7 @@
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 
@@ -7,98 +9,94 @@ import org.apache.abdera2.common.anno.Na
  * A simple "objectType":"book" object that serves primarily as an 
  * example of creating new ASObject types.
  */
-@Name("book")
+@SuppressWarnings("unchecked")
 public class BookObject extends CreativeWork {
 
-  private static final long serialVersionUID = -178336535850006357L;
 
-  public BookObject() {}
+  public BookObject(Map<String,Object> map) {
+    super(map,BookBuilder.class,BookObject.class);
+  }
   
-  public BookObject(String displayName) {
-    setDisplayName(displayName);
+  public <X extends BookObject, M extends Builder<X,M>>BookObject(Map<String,Object> map, Class<M> _class,Class<X>_obj) {
+    super(map,_class,_obj);
   }
   
-  @SuppressWarnings("unchecked")
   public <T extends ASObject>T getFormat() {
     return (T)getProperty("format");
   }
   
-  public void setFormat(ASObject format) {
-    setProperty("format", format);
-  }
-  
   public String getEdition() {
     return getProperty("edition");
   }
   
-  public void setEdition(String edition) {
-    setProperty("edition", edition);
-  }
-  
   public String getIsbn10() {
     return getProperty("isbn10");
   }
   
-  public void setIsbn10(String isbn) {
-    setProperty("isbn10", isbn);
-  }
-  
   public String getIsbn13() {
     return getProperty("isbn13");
   }
   
-  public void setIsbn13(String isbn) {
-    setProperty("isbn13", isbn);
-  }
-  
   public int getPageCount() {
-    return (Integer)getProperty("pageCount");
+    return getPropertyInt("pageCount");
   }
   
-  public void setPageCount(int pageCount) {
-    setProperty("pageCount", pageCount);
-  }
-
-  @SuppressWarnings("unchecked")
   public <T extends ASObject>T getIllustrator() {
     return (T)getProperty("illustrator");
   }
   
-  public void setIllustrator(ASObject illustrator) {
-    setProperty("illustrator", illustrator);
+  public static BookBuilder makeBook() {
+    return new BookBuilder("book");
   }
- 
-  public static <T extends BookObject>BookObjectGenerator<T> makeBook() {
-    return new BookObjectGenerator<T>();
+  
+  @Name("book")
+  public static final class BookBuilder extends Builder<BookObject,BookBuilder> {
+    public BookBuilder() {
+      super(BookObject.class,BookBuilder.class);
+    }
+    public BookBuilder(Map<String, Object> map) {
+      super(map, BookObject.class,BookBuilder.class);
+    }
+    public BookBuilder(String objectType) {
+      super(objectType, BookObject.class,BookBuilder.class);
+    }
   }
   
-  @SuppressWarnings("unchecked")
-  public static class BookObjectGenerator<T extends BookObject> extends CreativeWorkGenerator<T> {
-    public BookObjectGenerator() {
-      super((Class<T>) BookObject.class);
+  public abstract static class Builder<X extends BookObject,M extends Builder<X,M>> 
+    extends CreativeWork.Builder<X,M> {
+    public Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
     }
-    public BookObjectGenerator(Class<T> _class) {
-      super(_class);
+    protected Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
     }
-    public <X extends BookObjectGenerator<T>>X edition(String val) {
-      item.setEdition(val);
-      return (X)this;
+    public M edition(String val) {
+      set("edition",val);
+      return (M)this;
     }
-    public <X extends BookObjectGenerator<T>>X format(ASObject obj) {
-      item.setFormat(obj);
-      return (X)this;
+    public M format(ASObject obj) {
+      set("format",obj);
+      return (M)this;
     }
-    public <X extends BookObjectGenerator<T>>X illustrator(ASObject obj) {
-      item.setIllustrator(obj);
-      return (X)this;
+    public M illustrator(ASObject obj) {
+      set("illustrator",obj);
+      return (M)this;
     }
-    public <X extends BookObjectGenerator<T>>X isbn10(String val) {
-      item.setIsbn10(val);
-      return (X)this;
+    public M isbn10(String val) {
+      set("isbn10",val);
+      return (M)this;
     }
-    public <X extends BookObjectGenerator<T>>X pageCount(int count) {
-      item.setPageCount(count);
-      return (X)this;
+    public M isbn13(String val) {
+      set("isbn13",val);
+      return (M)this;
     }
+    public M pageCount(int count) {
+      set("pageCount",count);
+      return (M)this;
+    }
+
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookmarkObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookmarkObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookmarkObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookmarkObject.java Thu Nov 10 21:48:45 2011
@@ -17,50 +17,73 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 import org.apache.abdera2.common.iri.IRI;
 
-@Name("bookmark")
 public class BookmarkObject 
   extends ASObject {
 
-  private static final long serialVersionUID = -2753772783838463022L;
   public static final String TARGETURL = "targetUrl";
   
-  public BookmarkObject() {}
-  
-  public BookmarkObject(String displayName) {
-    setDisplayName(displayName);
+  public BookmarkObject(Map<String,Object> map) {
+    super(map,BookmarkBuilder.class,BookmarkObject.class);
   }
   
+  public <X extends BookmarkObject, M extends Builder<X,M>>BookmarkObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
+  }
+
   public String getTargetUrl() {
     return getProperty(TARGETURL);
   }
   
-  public void setTargetUrl(String targetUrl) {
-    setProperty(TARGETURL, targetUrl);
+  public static BookmarkBuilder makeBookmark() {
+    return new BookmarkBuilder("bookmark");
   }
 
-  public static <T extends BookmarkObject>BookmarkObjectGenerator<T> makeBookmark() {
-    return new BookmarkObjectGenerator<T>();
+  public static BookmarkBuilder makeBookmark(String targetUrl) {
+    return makeBookmark().targetUrl(targetUrl);
+  }
+  
+  public static BookmarkBuilder makeBookmark(IRI targetUrl) {
+    return makeBookmark().targetUrl(targetUrl);
+  }
+  
+  @Name("bookmark")
+  public static final class BookmarkBuilder 
+    extends Builder<BookmarkObject,BookmarkBuilder> {
+    public BookmarkBuilder() {
+      super(BookmarkObject.class,BookmarkBuilder.class);
+    }
+    public BookmarkBuilder(Map<String, Object> map) {
+      super(map, BookmarkObject.class,BookmarkBuilder.class);
+    }
+    public BookmarkBuilder(String objectType) {
+      super(objectType, BookmarkObject.class,BookmarkBuilder.class);
+    }
   }
   
   @SuppressWarnings("unchecked")
-  public static class BookmarkObjectGenerator<T extends BookmarkObject> extends ASObjectGenerator<T> {
-    public BookmarkObjectGenerator() {
-      super((Class<? extends T>) BookmarkObject.class);
-    }
-    public BookmarkObjectGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends BookmarkObjectGenerator<T>>X targetUrl(String uri) {
-      item.setTargetUrl(uri);
-      return (X)this;
-    }
-    public <X extends BookmarkObjectGenerator<T>>X targetUrl(IRI uri) {
-      item.setTargetUrl(uri != null ? uri.toString() : null);
-      return (X)this;
+  public static abstract class Builder<X extends BookmarkObject, M extends Builder<X,M>> 
+    extends ASObject.Builder<X,M> {
+    public Builder(Class<X> _class,Class<M>_builder) {
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X> _class,Class<M>_builder) {
+      super(objectType,_class,_builder);
+    }
+    public Builder(Map<String,Object> map,Class<X> _class,Class<M>_builder) {
+      super(map,_class,_builder);
+    }
+    public M targetUrl(String uri) {
+      return targetUrl(new IRI(uri));
     }
+    public M targetUrl(IRI uri) {
+      set(TARGETURL,uri);
+      return (M)this;
+    }    
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CommentObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CommentObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CommentObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CommentObject.java Thu Nov 10 21:48:45 2011
@@ -17,32 +17,37 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 
-@Name("comment")
 public class CommentObject 
   extends ASObject {
 
-  private static final long serialVersionUID = -7911420073285087386L;
-  
-  public CommentObject() {}
   
-  public CommentObject(String displayName) {
-    setDisplayName(displayName);
-  }
-
-  public static <T extends CommentObject>CommentObjectGenerator<T> makeComment() {
-    return new CommentObjectGenerator<T>();
+  public static <T extends CommentObject>Builder makeComment() {
+    return new Builder("comment");
   }
   
-  public static class CommentObjectGenerator<T extends CommentObject> extends ASObjectGenerator<T> {
-    @SuppressWarnings("unchecked")
-    public CommentObjectGenerator() {
-      super((Class<? extends T>) CommentObject.class);
+  @Name("comment")
+  public static class Builder extends ASObject.Builder<CommentObject,Builder> {
+    public Builder() {
+      super(CommentObject.class,Builder.class);
     }
-    public CommentObjectGenerator(Class<? extends T> _class) {
-      super(_class);
+    public Builder(String objectType) {
+      super(objectType,CommentObject.class,Builder.class);
     }
+    protected Builder(Map<String,Object> map) {
+      super(map,CommentObject.class,Builder.class);
+    }    
+  }
+  
+  public CommentObject(Map<String,Object> map) {
+    super(map,Builder.class,CommentObject.class);
+  }
+ 
+  public <X extends CommentObject, M extends ASObject.Builder<X,M>>CommentObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java Thu Nov 10 21:48:45 2011
@@ -1,5 +1,7 @@
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 
 /**
@@ -8,89 +10,69 @@ import org.apache.abdera2.activities.mod
 @SuppressWarnings("unchecked")
 public abstract class CreativeWork extends ASObject {
 
-  private static final long serialVersionUID = -178336535850006357L;
 
-  public CreativeWork() {}
-  
-  public CreativeWork(String displayName) {
-    setDisplayName(displayName);
+  protected <X extends CreativeWork, M extends Builder<X,M>>CreativeWork(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
   
   public <T extends ASObject>T getAbout() {
     return (T)getProperty("about");
   }
   
-  public void setAbout(ASObject about) {
-    setProperty("about", about);
-  }
-  
   public <T extends ASObject>T getGenre() {
     return (T)getProperty("genre");
   }
   
-  public void setGenre(ASObject genre) {
-    setProperty("genre", genre);
-  }
-  
   public <T extends ASObject>T getPublisher() {
     return (T)getProperty("publisher");
   }
   
-  public void setPublisher(ASObject publisher) {
-    setProperty("publisher", publisher);
-  }
-  
   public <T extends ASObject>T getProvider() {
     return (T)getProperty("provider");
   }
   
-  public void setProvider(ASObject provider) {
-    setProperty("provider", provider);
-  }
-  
   public <T extends ASObject>T getContributor() {
     return (T)getProperty("contributor");
   }
   
-  public void setContributor(ASObject contributor) {
-    setProperty("contributor", contributor);
-  }
-  
   public <T extends ASObject>T getEditor() {
     return (T)getProperty("editor");
   }
   
-  public void setEditor(ASObject editor) {
-    setProperty("editor", editor);
-  }
-  
-  public static abstract class CreativeWorkGenerator<T extends CreativeWork> extends ASObjectGenerator<T> {
-    protected CreativeWorkGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends CreativeWorkGenerator<T>>X about(ASObject object) {
-      item.setAbout(object);
-      return (X)this;
-    }
-    public <X extends CreativeWorkGenerator<T>>X contributor(ASObject object) {
-      item.setContributor(object);
-      return (X)this;
-    }
-    public <X extends CreativeWorkGenerator<T>>X editor(ASObject object) {
-      item.setEditor(object);
-      return (X)this;
-    }
-    public <X extends CreativeWorkGenerator<T>>X genre(ASObject object) {
-      item.setGenre(object);
-      return (X)this;
-    }
-    public <X extends CreativeWorkGenerator<T>>X provider(ASObject object) {
-      item.setProvider(object);
-      return (X)this;
-    }
-    public <X extends CreativeWorkGenerator<T>>X publisher(ASObject object) {
-      item.setPublisher(object);
-      return (X)this;
+  public static abstract class Builder<X extends CreativeWork, M extends Builder<X,M>> 
+    extends ASObject.Builder<X,M> {
+    protected Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
+    }
+    protected Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
+    }
+    protected Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
+    }
+    public M about(ASObject object) {
+      set("about",object);
+      return (M)this;
+    }
+    public M contributor(ASObject object) {
+      set("contributor",object);
+      return (M)this;
+    }
+    public M editor(ASObject object) {
+      set("editor",object);
+      return (M)this;
+    }
+    public M genre(ASObject object) {
+      set("genre",object);
+      return (M)this;
+    }
+    public M provider(ASObject object) {
+      set("provider",object);
+      return (M)this;
+    }
+    public M publisher(ASObject object) {
+      set("publisher",object);
+      return (M)this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EmbeddedExperience.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EmbeddedExperience.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EmbeddedExperience.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EmbeddedExperience.java Thu Nov 10 21:48:45 2011
@@ -3,10 +3,10 @@ package org.apache.abdera2.activities.mo
 import java.util.Map;
 
 import org.apache.abdera2.activities.model.ASBase;
-import org.apache.abdera2.activities.model.ASObject;
-import org.apache.abdera2.activities.model.Generator;
 import org.apache.abdera2.common.iri.IRI;
 
+import com.google.common.collect.ImmutableMap;
+
 /**
  * Represents an Embedded Experience data structure. Embedded Experiences
  * were introduced to Activity Streams through the OpenSocial 2.0 specification.
@@ -15,110 +15,169 @@ import org.apache.abdera2.common.iri.IRI
  * Gadget specification with an Activity Stream object that can be rendered 
  * in-line when the activity data is displayed within an OpenSocial container.
  */
-public class EmbeddedExperience 
+public final class EmbeddedExperience 
   extends ASBase {
-
-  private static final long serialVersionUID = -4311572934016006379L;
-
-  public EmbeddedExperience() {}
-  
-  public IRI getUrl() {
-    return getProperty("url");
-  }
   
-  public void setUrl(IRI iri) {
-    setProperty("url", iri);
+  public EmbeddedExperience(Map<String,Object> map) {
+    super(map,Builder.class,EmbeddedExperience.class);
   }
   
-  public void setUrl(String iri) {
-    setUrl(new IRI(iri));
+  public IRI getUrl() {
+    return getProperty("url");
   }
   
   public IRI getGadget() {
     return getProperty("gadget");
   }
   
-  public void setGadget(IRI iri) {
-    setProperty("gadget", iri);
-  }
-  
-  public void setGadget(String iri) {
-    setGadget(new IRI(iri));
-  }
-  
   public ASBase getContext() {
     return getProperty("context");
   }
   
-  public void setContext(ASBase context) {
-    setProperty("context", context);
-  }
-  
-  public void setContext(Map<String,Object> context) {
-    setProperty("context", context);
-  }
-  
   public IRI getPreviewImage() {
     return getProperty("previewImage");
   }
   
-  public void setPreviewImage(IRI iri) {
-    setProperty("previewImage", iri);
-  }
-  
-  public void setPreviewImage(String iri) {
-    setGadget(new IRI(iri));
+  public static Builder makeEmbeddedExperience() {
+    return new Builder();
   }
   
-  public static EmbeddedExperienceGenerator makeEmbeddedExperience() {
-    return new EmbeddedExperienceGenerator();
+  public static EmbeddedExperience makeGadgetEmbeddedExperience(
+    String url, 
+    ASBase context, 
+    String preview) {
+    return makeEmbeddedExperience()
+      .gadget(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  public static EmbeddedExperience makeGadgetEmbeddedExperience(
+    IRI url, 
+    ASBase context, 
+    IRI preview) {
+    return makeEmbeddedExperience()
+      .gadget(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  public static EmbeddedExperience makeGadgetEmbeddedExperience(
+    String url, 
+    Map<String,Object> context, 
+    String preview) {
+    return makeEmbeddedExperience()
+      .gadget(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  public static EmbeddedExperience makeGadgetEmbeddedExperience(
+    IRI url, 
+    Map<String,Object> context, 
+    IRI preview) {
+    return makeEmbeddedExperience()
+      .gadget(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  
+  public static EmbeddedExperience makeUrlEmbeddedExperience(
+    String url, 
+    ASBase context, 
+    String preview) {
+    return makeEmbeddedExperience()
+      .url(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  public static EmbeddedExperience makeUrlEmbeddedExperience(
+    IRI url, 
+    ASBase context, 
+    IRI preview) {
+    return makeEmbeddedExperience()
+      .url(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  public static EmbeddedExperience makeUrlEmbeddedExperience(
+    String url, 
+    Map<String,Object> context, 
+    String preview) {
+    return makeEmbeddedExperience()
+      .url(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
+  }
+  
+  public static EmbeddedExperience makeUrlEmbeddedExperience(
+    IRI url, 
+    Map<String,Object> context, 
+    IRI preview) {
+    return makeEmbeddedExperience()
+      .url(url)
+      .context(context)
+      .previewImage(preview)
+      .get();
   }
   
-  public static class EmbeddedExperienceGenerator 
-    extends Generator<EmbeddedExperience> {
+  public final static class Builder 
+    extends ASBase.Builder<EmbeddedExperience,Builder> {
 
-    public EmbeddedExperienceGenerator() {
-      super(EmbeddedExperience.class);
+    public Builder() {
+      super(EmbeddedExperience.class,Builder.class);
     }
     
-    public EmbeddedExperienceGenerator context(ASObject object) {
-      item.setContext(object);
+    protected Builder(Map<String,Object> map) {
+      super(map,EmbeddedExperience.class,Builder.class);
+    }
+
+    public Builder context(ASBase object) {
+      set("context", object);
       return this;
     }
     
-    public EmbeddedExperienceGenerator context(Map<String,Object> map) {
-      item.setContext(map);
+    public Builder context(Map<String,Object> map) {
+      set("context", ImmutableMap.copyOf(map));
       return this;
     }
     
-    public EmbeddedExperienceGenerator gadget(IRI iri) {
-      item.setGadget(iri);
+    public Builder gadget(IRI iri) {
+      set("gadget",iri);
       return this;
     }
     
-    public EmbeddedExperienceGenerator gadget(String iri) {
-      item.setGadget(iri);
-      return this;
+    public Builder gadget(String iri) {
+      return gadget(iri);
     }
     
-    public EmbeddedExperienceGenerator previewImage(IRI iri) {
-      item.setPreviewImage(iri);
+    public Builder previewImage(IRI iri) {
+      set("previewImage",iri);
       return this;
     }
     
-    public EmbeddedExperienceGenerator previewImage(String iri) {
-      item.setPreviewImage(iri);
-      return this;
+    public Builder previewImage(String iri) {
+      return previewImage(new IRI(iri));
     }
     
-    public EmbeddedExperienceGenerator url(IRI iri) {
-      item.setUrl(iri);
+    public Builder url(IRI iri) {
+      set("url",iri);
       return this;
     }
     
-    public EmbeddedExperienceGenerator url(String uri) {
-      item.setUrl(uri);
-      return this;
+    public Builder url(String uri) {
+      return url(new IRI(uri));
     }
+    
   }
 }

Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ErrorObject.java (from r1187164, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/protocol/ErrorObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ErrorObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ErrorObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/protocol/ErrorObject.java&r1=1187164&r2=1200583&rev=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/protocol/ErrorObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ErrorObject.java Thu Nov 10 21:48:45 2011
@@ -15,50 +15,58 @@
  * copyright in this work, please see the NOTICE file in the top level
  * directory of this distribution.
  */
-package org.apache.abdera2.activities.protocol;
+package org.apache.abdera2.activities.model.objects;
+
+import java.util.Map;
 
 import org.apache.abdera2.activities.io.gson.Properties;
 import org.apache.abdera2.activities.io.gson.Property;
 import org.apache.abdera2.activities.model.ASObject;
+import org.apache.abdera2.common.anno.Name;
 
-@Properties(
-@Property(name="code",to=Integer.class)
-)
-public class ErrorObject extends ASObject {
-  private static final long serialVersionUID = 2361855511692036786L;
+public final class ErrorObject extends ASObject {
   public static final String TYPE = "error";
-  public ErrorObject() {
-    super(TYPE);
+  public ErrorObject(Map<String,Object> map) {
+    super(map,Builder.class,ErrorObject.class);
   }  
-  public ErrorObject(String displayName) {
-    super(TYPE);
-    setDisplayName(displayName);
-  }
-  public String getObjectType() {
-    return TYPE;
-  }
+
   public int getCode() {
-    return (Integer)getProperty("code");
+    return getPropertyInt("code");
   }
-  public void setCode(int code) {
-    setProperty("code",code);
+  
+  public static Builder makeError() {
+    return new Builder("error");
   }
   
-  public static <T extends ErrorObject>ErrorObjectGenerator<T> makeError() {
-    return new ErrorObjectGenerator<T>();
+  public static ErrorObject makeError(int code, String message) {
+    return makeError()
+      .code(code)
+      .displayName(message)
+      .get();
   }
   
-  @SuppressWarnings("unchecked")
-  public static class ErrorObjectGenerator<T extends ErrorObject> extends ASObjectGenerator<T> {
-    public ErrorObjectGenerator() {
-      super((Class<? extends T>) ErrorObject.class);
-    }
-    public ErrorObjectGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends ErrorObjectGenerator<T>>X code(int code) {
-      item.setCode(code);
-      return (X)this;
+  @Name("error")
+  @Properties(@Property(name="code",to=Integer.class))
+  public final static class Builder 
+    extends ASObject.Builder<ErrorObject,Builder> {
+    public Builder() {
+      super(ErrorObject.class,Builder.class);
+    }
+    public Builder(String objectType) {
+      super(objectType,ErrorObject.class,Builder.class);
+    }
+    public Builder(Map<String,Object> map) {
+      super(map,ErrorObject.class,Builder.class);
+    }
+    public Builder template() {
+      return new Builder(map.build());
+    }
+    public Builder code(int code) {
+      set("code",code);
+      return this;
+    }
+    public ErrorObject get() {
+      return new ErrorObject(map.build());
     }
   }
 }

Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ErrorObject.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EventObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EventObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EventObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/EventObject.java Thu Nov 10 21:48:45 2011
@@ -17,128 +17,114 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.activities.model.Collection;
 import org.apache.abdera2.common.anno.Name;
 import org.joda.time.DateTime;
 
-@Name("event")
 public class EventObject 
   extends ASObject {
 
-  private static final long serialVersionUID = -7607925831414516450L;
   public static final String ATTENDING = "attending";
   public static final String ENDTIME = "endTime";
   public static final String MAYBEATTENDING = "maybeAttending";
   public static final String NOTATTENDING = "notAttending";
   public static final String STARTTIME = "startTime";
   
-  public EventObject() {
-  }
-  
-  public EventObject(String displayName) {
-    setDisplayName(displayName);
+  public EventObject(Map<String,Object> map) {
+    super(map,EventBuilder.class,EventObject.class);
   }
   
-  protected Collection<ASObject> getcol(String name, boolean create) {
-    Collection<ASObject> col = getProperty(name);
-    if (col == null && create) {
-      col = new Collection<ASObject>();
-      setProperty(name,col);
-    }
-    return col;
+  public <X extends EventObject, M extends Builder<X,M>>EventObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
   
   public Collection<ASObject> getAttending() {
-    return getcol(ATTENDING,false);
-  }
-  
-  public Collection<ASObject> getAttending(boolean create) {
-    return getcol(ATTENDING,create);
-  }
-  
-  public void setAttending(Collection<ASObject> attending) {
-    setProperty(ATTENDING, attending);
+    return getProperty(ATTENDING);
   }
   
   public DateTime getEndTime() {
     return getProperty(ENDTIME);
   }
   
-  public void setEndTime(DateTime endTime) {
-    setProperty(ENDTIME, endTime);
-  }
-  
   public Collection<ASObject> getMaybeAttending() {
-    return getcol(MAYBEATTENDING,false);
-  }
-  
-  public Collection<ASObject> getMaybeAttending(boolean create) {
-    return getcol(MAYBEATTENDING,create);
-  }
-  
-  public void setMaybeAttending(Collection<ASObject> maybeAttending) {
-    setProperty(MAYBEATTENDING, maybeAttending);
+    return getProperty(MAYBEATTENDING);
   }
   
   public Collection<ASObject> getNotAttending() {
-    return getcol(NOTATTENDING,false);
+    return getProperty(NOTATTENDING);
   }
   
-  public Collection<ASObject> getNotAttending(boolean create) {
-    return getcol(NOTATTENDING,create);
+  public DateTime getStartTime() {
+    return getProperty(STARTTIME);
   }
   
-  public void setNotAttending(Collection<ASObject> notAttending) {
-    setProperty(NOTATTENDING, notAttending);
+  public static EventBuilder makeEvent() {
+    return new EventBuilder("event");
   }
   
-  public DateTime getStartTime() {
-    return getProperty(STARTTIME);
+  public static EventBuilder makeEvent(String objectType) {
+    return new EventBuilder(objectType);
   }
   
-  public void setStartTime(DateTime startTime) {
-    setProperty(STARTTIME, startTime);
-  }
+  @Name("event")
+  public static final class EventBuilder extends Builder<EventObject,EventBuilder> {
+
+    public EventBuilder() {
+      super(EventObject.class,EventBuilder.class);
+    }
 
-  public static <T extends EventObject>EventObjectGenerator<T> makeEvent() {
-    return new EventObjectGenerator<T>();
+    public EventBuilder(Map<String, Object> map) {
+      super(map, EventObject.class,EventBuilder.class);
+    }
+
+    public EventBuilder(String objectType) {
+      super(objectType, EventObject.class,EventBuilder.class);
+    }
+    
   }
   
   @SuppressWarnings("unchecked")
-  public static class EventObjectGenerator<T extends EventObject> extends ASObjectGenerator<T> {
+  public static abstract class Builder<X extends EventObject,M extends Builder<X,M>>
+    extends ASObject.Builder<X,M> {
 
-    public EventObjectGenerator() {
-      super((Class<? extends T>) EventObject.class);
+    public Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
     }
     
-    public EventObjectGenerator(Class<? extends T> _class) {
-      super(_class);
+    public Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
     }
     
-    public <X extends EventObjectGenerator<T>>X attending(Collection<ASObject> col) {
-      item.setAttending(col);
-      return (X)this;
+    public Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
     }
-    
-    public <X extends EventObjectGenerator<T>>X endTime(DateTime dt) {
-      item.setEndTime(dt);
-      return (X)this;
+
+    public <T extends ASObject>M attending(Collection<T> col) {
+      set(ATTENDING, col);
+      return (M)this;
     }
     
-    public <X extends EventObjectGenerator<T>>X maybeAttending(Collection<ASObject> col) {
-      item.setMaybeAttending(col);
-      return (X)this;
+    public M endTime(DateTime dt) {
+      set(ENDTIME, dt);
+      return (M)this;
     }
     
-    public <X extends EventObjectGenerator<T>>X notAttending(Collection<ASObject> col) {
-      item.setNotAttending(col);
-      return (X)this;
+    public <T extends ASObject>M maybeAttending(Collection<T> col) {
+      set(MAYBEATTENDING, col);
+      return (M)this;
     }
     
-    public <X extends EventObjectGenerator<T>>X startTime(DateTime t) {
-      item.setStartTime(t);
-      return (X)this;
+    public <T extends ASObject>M notAttending(Collection<T> col) {
+      set(NOTATTENDING, col);
+      return (M)this;
     }
+    
+    public M startTime(DateTime t) {
+      set(STARTTIME, t);
+      return (M)this;
+    }    
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/FileObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/FileObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/FileObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/FileObject.java Thu Nov 10 21:48:45 2011
@@ -17,79 +17,124 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import javax.activation.MimeType;
-import javax.activation.MimeTypeParseException;
 
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 import org.apache.abdera2.common.iri.IRI;
 import org.apache.abdera2.common.mediatype.MimeTypeHelper;
 
-@Name("file")
 public class FileObject 
   extends ASObject {
 
-  private static final long serialVersionUID = -5449136149228249949L;
   public static final String FILEURL = "fileUrl";
   
-  public FileObject() {
+  public FileObject(Map<String,Object> map) {
+    super(map,FileBuilder.class,FileObject.class);
   }
   
-  public FileObject(String displayName) {
-    setDisplayName(displayName);
+  public <X extends FileObject, M extends Builder<X,M>>FileObject(Map<String,Object> map, Class<M> _class, Class<X> _obj) {
+    super(map,_class,_obj);
   }
   
   public IRI getFileUrl() {
     return getProperty(FILEURL);
   }
   
-  public void setFileUrl(IRI fileUrl) {
-    setProperty(FILEURL, fileUrl);
-  }
-  
-  public void setFileUrl(String fileUrl) {
-    setFileUrl(new IRI(fileUrl));
-  }
-  
   public MimeType getMimeType() {
     return getProperty("mimeType");
   }
   
-  public void setMimeType(MimeType mimeType) {
-    setProperty("mimeType", MimeTypeHelper.unmodifiableMimeType(mimeType));
+  public static FileBuilder makeFile() {
+    return new FileBuilder("file");
   }
   
-  public void setMimeType(String mimeType) {
-    setProperty("mimeType", MimeTypeHelper.unmodifiableMimeType(mimeType));
+  public static FileObject makeFile(
+    String displayName, 
+    String fileUrl, 
+    String mimeType) {
+    return makeFile()
+      .displayName(displayName)
+      .fileUrl(fileUrl)
+      .mimeType(mimeType)
+      .get();
+  }
+  
+  public static FileObject makeFile(
+    String displayName, 
+    IRI fileUrl, 
+    String mimeType) {
+    return makeFile()
+      .displayName(displayName)
+      .fileUrl(fileUrl)
+      .mimeType(mimeType)
+      .get();
+  }
+  
+  public static FileObject makeFile(
+    String displayName, 
+    String fileUrl, 
+    MimeType mimeType) {
+    return makeFile()
+      .displayName(displayName)
+      .fileUrl(fileUrl)
+      .mimeType(mimeType)
+      .get();
+  }
+  
+  public static FileObject makeFile(
+    String displayName, 
+    IRI fileUrl, 
+    MimeType mimeType) {
+    return makeFile()
+      .displayName(displayName)
+      .fileUrl(fileUrl)
+      .mimeType(mimeType)
+      .get();
+  }
+  
+  @Name("file")
+  public static final class FileBuilder extends Builder<FileObject,FileBuilder> {
+    public FileBuilder() {
+      super(FileObject.class,FileBuilder.class);
+    }
+    public FileBuilder(Map<String, Object> map) {
+      super(map, FileObject.class,FileBuilder.class);
+    }
+    public FileBuilder(String objectType) {
+      super(objectType, FileObject.class,FileBuilder.class);
+    }
   }
   
-  public static <T extends FileObject>FileObjectGenerator<T> makeFile() {
-    return new FileObjectGenerator<T>();
-  }
   
   @SuppressWarnings("unchecked")
-  public static class FileObjectGenerator<T extends FileObject> extends ASObjectGenerator<T> {
-    public FileObjectGenerator() {
-      super((Class<? extends T>) FileObject.class);
-    }
-    public FileObjectGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends FileObjectGenerator<T>>X fileUrl(IRI iri) {
-      item.setFileUrl(iri);
-      return (X)this;
-    }
-    public <X extends FileObjectGenerator<T>>X fileUrl(String uri) {
-      item.setFileUrl(uri);
-      return (X)this;
-    }
-    public <X extends FileObjectGenerator<T>>X mimeType(MimeType mimeType) {
-      item.setMimeType(mimeType);
-      return (X)this;
-    }
-    public <X extends FileObjectGenerator<T>>X mimeType(String mimeType) {
-      item.setMimeType(mimeType);
-      return (X)this;
+  public static abstract class Builder<X extends FileObject, M extends Builder<X,M>>
+    extends ASObject.Builder<X,M> {
+    public Builder(Class<X> _class, Class<M> _builder) {
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X> _class, Class<M> _builder) {
+      super(objectType,_class,_builder);
+    }
+    public Builder(Map<String,Object> map,Class<X> _class, Class<M> _builder) {
+      super(map,_class,_builder);
+    }
+    public M fileUrl(IRI iri) {
+      set(FILEURL,iri);
+      return (M)this;
+    }
+    public M fileUrl(String uri) {
+      return fileUrl(new IRI(uri));
+    }
+    public M mimeType(MimeType mimeType) {
+      set("mimeType",MimeTypeHelper.unmodifiableMimeType(mimeType));
+      return (M)this;
+    }
+    public M mimeType(String mimeType) {
+      set("mimeType",MimeTypeHelper.unmodifiableMimeType(mimeType));
+      return (M)this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/GroupObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/GroupObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/GroupObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/GroupObject.java Thu Nov 10 21:48:45 2011
@@ -17,32 +17,42 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 
-@Name("group")
 public class GroupObject 
   extends ASObject {
 
-  private static final long serialVersionUID = -8735573352110428150L;
-  
-  public GroupObject() {}
   
-  public GroupObject(String displayName) {
-    setDisplayName(displayName);
+  public static Builder makeGroup() {
+    return new Builder("group");
   }
-
-  public static <T extends GroupObject>GroupObjectGenerator<T> makeGroup() {
-    return new GroupObjectGenerator<T>();
+  
+  public static GroupObject makeGroup(String id) {
+    return makeGroup().id(id).get();
   }
   
-  public static class GroupObjectGenerator<T extends GroupObject> extends ASObjectGenerator<T> {
-    @SuppressWarnings("unchecked")
-    public GroupObjectGenerator() {
-      super((Class<? extends T>) GroupObject.class);
+  @Name("group")
+  public static final class Builder extends ASObject.Builder<GroupObject,Builder> {
+    public Builder() {
+      super(GroupObject.class,Builder.class);
+    }
+    public Builder(String objectType) {
+      super(objectType,GroupObject.class,Builder.class);
     }
-    public GroupObjectGenerator(Class<? extends T> _class) {
-      super(_class);
+    public Builder(Map<String,Object> map) {
+      super(map,GroupObject.class,Builder.class);
     }
   }
+  
+  public GroupObject(Map<String,Object> map) {
+    super(map,Builder.class,GroupObject.class);
+  }
+  
+  public <X extends GroupObject, M extends ASObject.Builder<X,M>>GroupObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
+  }
+  
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ImageObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ImageObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ImageObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ImageObject.java Thu Nov 10 21:48:45 2011
@@ -17,46 +17,62 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.activities.model.MediaLink;
 import org.apache.abdera2.common.anno.Name;
 
-@Name("image")
 public class ImageObject 
   extends ASObject {
 
-  private static final long serialVersionUID = 2130182696482757451L;
   public static final String FULLIMAGE = "fullImage";
   
-  public ImageObject() {}
-  
-  public ImageObject(String displayName) {
-    setDisplayName(displayName);
+  public ImageObject(Map<String,Object> map) {
+    super(map,ImageBuilder.class,ImageObject.class);
   }
   
+  public <X extends ImageObject, M extends Builder<X,M>>ImageObject(Map<String,Object> map, Class<M> _class,Class<X>_obj) {
+    super(map,_class,_obj);
+  }
+    
   public MediaLink getFullImage() {
     return getProperty(FULLIMAGE);
   }
-  
-  public void setFullImage(MediaLink fullImage) {
-    setProperty(FULLIMAGE, fullImage);
+
+  public static ImageBuilder makeImage() {
+    return new ImageBuilder("image");
   }
   
-  public static <T extends ImageObject>ImageObjectGenerator<T> makeImage() {
-    return new ImageObjectGenerator<T>();
+  @Name("image")
+  public static final class ImageBuilder extends Builder<ImageObject,ImageBuilder> {
+    public ImageBuilder() {
+      super(ImageObject.class, ImageBuilder.class);
+    }
+    public ImageBuilder(Map<String, Object> map) {
+      super(map, ImageObject.class, ImageBuilder.class);
+    }
+    public ImageBuilder(String objectType) {
+      super(objectType,ImageObject.class, ImageBuilder.class);
+    }
+    
   }
   
   @SuppressWarnings("unchecked")
-  public static class ImageObjectGenerator<T extends ImageObject> extends ASObjectGenerator<T> {
-    public ImageObjectGenerator() {
-      super((Class<? extends T>) ImageObject.class);
-    }
-    public ImageObjectGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends ImageObjectGenerator<T>>X fullImage(MediaLink fullImage) {
-      item.setFullImage(fullImage);
-      return (X)this;
+  public static abstract class Builder<X extends ImageObject, M extends Builder<X,M>> 
+    extends ASObject.Builder<X,M> {
+    public Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
+    }
+    public Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
+    }
+    public M fullImage(MediaLink fullImage) {
+      set(FULLIMAGE, fullImage);
+      return (M)this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Mood.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Mood.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Mood.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Mood.java Thu Nov 10 21:48:45 2011
@@ -17,61 +17,63 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASBase;
-import org.apache.abdera2.activities.model.Generator;
 import org.apache.abdera2.activities.model.MediaLink;
+import org.apache.abdera2.common.iri.IRI;
 
-public class Mood extends ASBase {
+public final class Mood extends ASBase {
 
-  private static final long serialVersionUID = -3361108212621494744L;
   public static final String IMAGE = "image";
   public static final String DISPLAYNAME = "displayName";
   
-  public Mood() {}
-  
-  public Mood(String displayName) {
-    setDisplayName(displayName);
+  protected Mood(Map<String,Object> map) {
+    super(map,Builder.class,Mood.class);
   }
   
   public String getDisplayName() {
     return getProperty(DISPLAYNAME);
   }
   
-  public void setDisplayName(String displayName) {
-    setProperty(DISPLAYNAME, displayName);
-  }
-  
   public MediaLink getImage() {
     return getProperty(IMAGE);
   }
   
-  public void setImage(MediaLink image) {
-    setProperty(IMAGE, image);
-  }
-  
   public String toString() {
     return getDisplayName();
   }
   
-  public static <T extends Mood>MoodGenerator<T> makeMood() {
-    return new MoodGenerator<T>();
+  public static Builder makeMood() {
+    return new Builder();
   }
   
-  @SuppressWarnings("unchecked")
-  public static class MoodGenerator<T extends Mood> extends Generator<T> {
-    public MoodGenerator() {
-      super((Class<? extends T>) Mood.class);
+  public static Mood makeMood(String name, MediaLink image) {
+    return makeMood().displayName(name).image(image).get();
+  }
+  
+  public static Mood makeMood(String name, String image) {
+    return makeMood().displayName(name).image(MediaLink.makeMediaLink(image)).get();
+  }
+  
+  public static Mood makeMood(String name, IRI image) {
+    return makeMood().displayName(name).image(MediaLink.makeMediaLink(image)).get();
+  }
+
+  public static final class Builder extends ASBase.Builder<Mood,Builder> {
+    public Builder() {
+      super(Mood.class,Builder.class);
     }
-    public MoodGenerator(Class<T> _class) {
-      super(_class);
+    protected Builder(Map<String,Object> map) {
+      super(map,Mood.class,Builder.class);
     }
-    public <X extends MoodGenerator<T>>X displayName(String dn) {
-      item.setDisplayName(dn);
-      return (X)this;
+    public Builder displayName(String dn) {
+      set(DISPLAYNAME,dn);
+      return this;
     }
-    public <X extends MoodGenerator<T>>X image(MediaLink link) {
-      item.setImage(link);
-      return (X)this;
+    public Builder image(MediaLink link) {
+      set(IMAGE, link);
+      return this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java Thu Nov 10 21:48:45 2011
@@ -1,5 +1,7 @@
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.io.gson.Properties;
 import org.apache.abdera2.activities.io.gson.Property;
 import org.apache.abdera2.activities.model.ASObject;
@@ -11,116 +13,109 @@ import org.joda.time.Duration;
  * A simple "objectType":"movie" object that serves primarily as an 
  * example of creating new ASObject types.
  */
-@Name("movie")
-@Properties({
-  @Property(name="preview",to=MediaLink.class),
-  @Property(name="duration",to=Duration.class)
-})
 @SuppressWarnings("unchecked")
 public class MovieObject extends CreativeWork {
 
-  private static final long serialVersionUID = -1551754630697817614L;
 
-  public MovieObject() {}
+  public MovieObject(Map<String,Object> map) {
+    super(map,MovieBuilder.class,MovieObject.class);
+  }
   
-  public MovieObject(String displayName) {
-    setDisplayName(displayName);
+  public <X extends MovieObject, M extends Builder<X,M>>MovieObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
   
   public <T extends ASObject>T getActors() {
     return (T)getProperty("actors");
   }
   
-  public void setActors(ASObject actors) {
-    setProperty("actors", actors);
-  }
-  
   public <T extends ASObject>T getDirector() {
     return (T)getProperty("director");
   }
   
-  public void setDirector(ASObject director) {
-    setProperty("director", director);
-  }
-  
   public Duration getDuration() {
     return getProperty("duration");
   }
   
-  public void setDuration(Duration duration) {
-    setProperty("duration", duration);
-  }
-  
   public <T extends ASObject>T getMusicBy() {
     return (T)getProperty("musicBy");
   }
   
-  public void setMusicBy(ASObject musicBy) {
-    setProperty("musicBy", musicBy);
-  }
-  
   public <T extends ASObject>T getProducer() {
     return (T)getProperty("producer");
   }
   
-  public void setProducer(ASObject producer) {
-    setProperty("producer", producer);
-  }
-  
   public <T extends ASObject>T getProductionCompany() {
     return (T)getProperty("productionCompany");
   }
   
-  public void setProductionCompany(ASObject org) {
-    setProperty("productionCompany", org);
-  }
-  
   public MediaLink getPreview() {
     return getProperty("preview");
   }
   
-  public void setPreview(MediaLink link) {
-    setProperty("preview", link);
+  public static MovieBuilder makeMovie() {
+    return new MovieBuilder("movie");
   }
   
-  public static <T extends MovieObject>MovieObjectGenerator<T> makeMovie() {
-    return new MovieObjectGenerator<T>();
+  @Name("movie")
+  @Properties({
+    @Property(name="preview",to=MediaLink.class),
+    @Property(name="duration",to=Duration.class)
+  })
+  public static final class MovieBuilder extends Builder<MovieObject,MovieBuilder> {
+
+    public MovieBuilder() {
+      super(MovieObject.class, MovieBuilder.class);
+    }
+
+    public MovieBuilder(Map<String, Object> map) {
+      super(map, MovieObject.class, MovieBuilder.class);
+    }
+
+    public MovieBuilder(String objectType) {
+      super(objectType, MovieObject.class, MovieBuilder.class);
+    }
+    
   }
   
-  public static class MovieObjectGenerator<T extends MovieObject> extends CreativeWorkGenerator<T> {
-    public MovieObjectGenerator() {
-      super((Class<T>) MovieObject.class);
+  public static class Builder<X extends MovieObject, M extends Builder<X,M>> 
+    extends CreativeWork.Builder<X,M> {
+    public Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
     }
-    public MovieObjectGenerator(Class<T> _class) {
-      super(_class);
+    public Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
     }
-    public <X extends MovieObjectGenerator<T>>X actors(ASObject obj) {
-      item.setActors(obj);
-      return (X)this;
+    public M actors(ASObject obj) {
+      set("actors",obj);
+      return (M)this;
     }
-    public <X extends MovieObjectGenerator<T>>X director(ASObject obj) {
-      item.setDirector(obj);
-      return (X)this;
+    public M director(ASObject obj) {
+      set("director",obj);
+      return (M)this;
     }
-    public <X extends MovieObjectGenerator<T>>X duration(Duration obj) {
-      item.setDuration(obj);
-      return (X)this;
+    public M duration(Duration obj) {
+      set("duration",obj);
+      return (M)this;
     }
-    public <X extends MovieObjectGenerator<T>>X musicBy(ASObject obj) {
-      item.setMusicBy(obj);
-      return (X)this;
+    public M musicBy(ASObject obj) {
+      set("musicBy",obj);
+      return (M)this;
     }
-    public <X extends MovieObjectGenerator<T>>X preview(MediaLink obj) {
-      item.setPreview(obj);
-      return (X)this;
+    public M preview(MediaLink obj) {
+      set("preview",obj);
+      return (M)this;
     }
-    public <X extends MovieObjectGenerator<T>>X producer(ASObject obj) {
-      item.setProducer(obj);
-      return (X)this;
+    public M producer(ASObject obj) {
+      set("producer",obj);
+      return (M)this;
     }
-    public <X extends MovieObjectGenerator<T>>X productionCompany(ASObject obj) {
-      item.setProductionCompany(obj);
-      return (X)this;
+    public M productionCompany(ASObject obj) {
+      set("productionCompany",obj);
+      return (M)this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NameObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NameObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NameObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NameObject.java Thu Nov 10 21:48:45 2011
@@ -1,133 +1,120 @@
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.iri.IRI;
 
-@org.apache.abdera2.common.anno.Name("name")
 public class NameObject 
   extends ASObject {
 
-  private static final long serialVersionUID = 5503270370616022868L;
-
-  public NameObject() {
-    super();
+  public NameObject(Map<String,Object> map) {
+    super(map,NameBuilder.class,NameObject.class);
+  }
+  
+  public <X extends NameObject, M extends Builder<X,M>>NameObject(Map<String,Object> map, Class<M> _class, Class<X>_obj) {
+    super(map,_class,_obj);
   }
 
   public String getFamilyName() {
     return getProperty("familyName");
   }
   
-  public void setFamilyName(String val) {
-    setProperty("familyName", val);
-  }
-  
   public String getFormatted() {
     return getProperty("formatted");
   }
   
-  public void setFormatted(String val) {
-    setProperty("formatted", val);
-  }
-  
   public String getGivenName() {
     return getProperty("givenName");
   }
   
-  public void setGivenName(String val) {
-    setProperty("givenName", val);
-  }
-  
   public String getHonorificPrefix() {
     return getProperty("honorificPrefix");
   }
   
-  public void setHonorificPrefix(String val) {
-    setProperty("honorificPrefix", val);
-  }
-  
   public String getHonorificSuffix() {
     return getProperty("honorificSuffix");
   }
   
-  public void setHonorificSuffix(String val) {
-    setProperty("honorificSuffix", val);
-  }
-  
   public String getMiddleName() {
     return getProperty("middleName");
   }
   
-  public void setMiddleName(String val) {
-    setProperty("middleName", val);
-  }
-  
   public String getPronunciation() {
     return getProperty("pronunciation");
   }
   
-  public void setPronunciation(String val) {
-    setProperty("pronunciation", val);
-  }
-  
   public IRI getPronunciationUrl() {
     return getProperty("pronunciationUrl");
   }
   
-  public void setPronunciationUrl(IRI val) {
-    setProperty("pronunciationUrl", val);
-  }
-  
-  public void setPronunciationUrl(String val) {
-    setPronunciationUrl(new IRI(val));
+  public static NameBuilder makeName() {
+    return new NameBuilder("name");
   }
   
-  public static <T extends NameObject>NameObjectGenerator<T> makeName() {
-    return new NameObjectGenerator<T>();
+  @org.apache.abdera2.common.anno.Name("name")
+  public static final class NameBuilder extends Builder<NameObject,NameBuilder> {
+
+    public NameBuilder() {
+      super(NameObject.class,NameBuilder.class);
+    }
+
+    public NameBuilder(Map<String, Object> map) {
+      super(map, NameObject.class,NameBuilder.class);
+    }
+
+    public NameBuilder(String objectType) {
+      super(objectType, NameObject.class,NameBuilder.class);
+    }
+    
   }
   
   @SuppressWarnings("unchecked")
-  public static class NameObjectGenerator<T extends NameObject> extends ASObjectGenerator<T> {
-    public NameObjectGenerator() {
-      super((Class<? extends T>) NameObject.class);
-    }
-    public NameObjectGenerator(Class<T> _class) {
-      super(_class);
-    }
-    public <X extends NameObjectGenerator<T>>X familyName(String fn) {
-      item.setFamilyName(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X formatted(String fn) {
-      item.setFormatted(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X givenName(String fn) {
-      item.setGivenName(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X honorificPrefix(String fn) {
-      item.setHonorificPrefix(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X honorificSuffix(String fn) {
-      item.setHonorificSuffix(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X middleName(String fn) {
-      item.setMiddleName(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X pronunciation(String fn) {
-      item.setPronunciation(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X pronunciationUrl(String fn) {
-      item.setPronunciationUrl(fn);
-      return (X)this;
-    }
-    public <X extends NameObjectGenerator<T>>X pronunciationUrl(IRI fn) {
-      item.setPronunciationUrl(fn);
-      return (X)this;
+  public static abstract class Builder<X extends NameObject, M extends Builder<X,M>> 
+    extends ASObject.Builder<X,M> {
+    public Builder(Class<X>_class,Class<M>_builder) {
+      super(_class,_builder);
+    }
+    public Builder(String objectType,Class<X>_class,Class<M>_builder) {
+      super(objectType,_class,_builder);
+    }
+    public Builder(Map<String,Object> map,Class<X>_class,Class<M>_builder) {
+      super(map,_class,_builder);
+    }
+    public M familyName(String fn) {
+      set("familyName",fn);
+      return (M)this;
+    }
+    public M formatted(String fn) {
+      set("formatted",fn);
+      return (M)this;
+    }
+    public M givenName(String fn) {
+      set("givenName",fn);
+      return (M)this;
+    }
+    public M honorificPrefix(String fn) {
+      set("honorificPrefix",fn);
+      return (M)this;
+    }
+    public M honorificSuffix(String fn) {
+      set("honorificSuffix",fn);
+      return (M)this;
+    }
+    public M middleName(String fn) {
+      set("middleName",fn);
+      return (M)this;
+    }
+    public M pronunciation(String fn) {
+      set("pronunciation",fn);
+      return (M)this;
+    }
+    public M pronunciationUrl(String fn) {
+      return pronunciationUrl(fn);
+    }
+    public M pronunciationUrl(IRI fn) {
+      set("pronunciationUrl",fn);
+      return (M)this;
     }
   }
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NoteObject.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NoteObject.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NoteObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/NoteObject.java Thu Nov 10 21:48:45 2011
@@ -17,32 +17,37 @@
  */
 package org.apache.abdera2.activities.model.objects;
 
+import java.util.Map;
+
 import org.apache.abdera2.activities.model.ASObject;
 import org.apache.abdera2.common.anno.Name;
 
-@Name("note")
 public class NoteObject 
   extends ASObject {
-
-  private static final long serialVersionUID = -1394391975713468634L;
-  
-  public NoteObject() {}
   
-  public NoteObject(String displayName) {
-    setDisplayName(displayName);
-  }  
-  
-  public static <T extends NoteObject>NoteObjectGenerator<T> makeNote() {
-    return new NoteObjectGenerator<T>();
+  public static <T extends NoteObject>Builder makeNote() {
+    return new Builder("note");
   }
   
-  public static class NoteObjectGenerator<T extends NoteObject> extends ASObjectGenerator<T> {
-    @SuppressWarnings("unchecked")
-    public NoteObjectGenerator() {
-      super((Class<? extends T>) NoteObject.class);
+  @Name("note")
+  public static class Builder extends ASObject.Builder<NoteObject,Builder> {
+    public Builder() {
+      super(NoteObject.class,Builder.class);
+    }
+    public Builder(String objectType) {
+      super(objectType,NoteObject.class,Builder.class);
     }
-    public NoteObjectGenerator(Class<? extends T> _class) {
-      super(_class);
+    public Builder(Map<String,Object> map) {
+      super(map,NoteObject.class,Builder.class);
     }
   }
+  
+  public NoteObject(Map<String,Object> map) {
+    super(map,Builder.class,NoteObject.class);
+  }
+  
+  public <X extends NoteObject, M extends ASObject.Builder<X,M>>NoteObject(Map<String,Object> map,Class<M> _class,Class<X>_obj) {
+    super(map,_class,_obj);
+  }
+  
 }

Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java?rev=1200583&r1=1200582&r2=1200583&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java Thu Nov 10 21:48:45 2011
@@ -1,125 +1,144 @@
 package org.apache.abdera2.activities.model.objects;
 
 import org.apache.abdera2.activities.model.ASObject;
+import org.apache.abdera2.activities.model.ASObject.ASObjectBuilder;
 
-public class Objects {
+public final class Objects {
 
+  private Objects() {}
+  
   /**
    * Special AS Object that represents the authenticated user
    */
-  public static ASObject SELF() {
-    return new ASObject("@self");
+  
+  public static final ASObject SELF = SELF().get();
+  public static final ASObject ME = ME().get();
+  public static final ASObject FRIENDS = FRIENDS().get();
+  public static final ASObject NETWORK = NETWORK().get();
+  public static final ASObject ALL = ALL().get();
+  public static final ASObject PUBLIC = PUBLIC().get();
+  
+  public static ASObjectBuilder SELF() {
+    return ASObject.makeObject("@self");
   }
   
   /**
    * Special AS Object that represents the authenticated user.
    * synonymous with @self
    */
-  public static ASObject ME() {
-    return new ASObject("@me");
+  public static ASObjectBuilder ME() {
+    return ASObject.makeObject("@me");
   }
   
   /**
    * Special AS Object that represents the authenticated users 
    * collection of direct contacts
    */
-  public static ASObject FRIENDS() {
-    return new ASObject("@friends");
+  public static ASObjectBuilder FRIENDS() {
+    return ASObject.makeObject("@friends");
   }
   
   /**
    * Special AS Object that represents a subset of the authenticated users
    * collection of direct contacts
    */
-  public static ASObject FRIENDS(String id) {
-    ASObject obj = FRIENDS();
-    obj.setId(id);
-    return obj;
+  public static ASObjectBuilder FRIENDS(String id) {
+    return ASObject.makeObject("@friends").id(id);
   }
   
   /**
    * Special AS Object that represents the authenticated users collection
    * of extended contacts (e.g. friends of friends)
    */
-  public static ASObject NETWORK() {
-    return new ASObject("@network");
+  public static ASObjectBuilder NETWORK() {
+    return ASObject.makeObject("@network");
   }
   
   /**
    * Special AS Object that represents everyone. synonymous with @public
    */
-  public static ASObject ALL() {
-    return new ASObject("@all");
+  public static ASObjectBuilder ALL() {
+    return ASObject.makeObject("@all");
   }
   
   /**
    * Special AS Object that represents everyone
    */
-  public static ASObject PUBLIC() {
-    return new ASObject("@public");
+  public static ASObjectBuilder PUBLIC() {
+    return ASObject.makeObject("@public");
   }
   
   /**
    * Create an anonymous AS Object (no objectType property)
    */
-  public static ASObject anonymousObject(String id) {
-    ASObject obj = new ASObject();
-    obj.setObjectType(null);
-    obj.setId(id);
-    return obj;
+  public static ASObjectBuilder anonymousObject(String id) {
+    return ASObject.makeObject().id(id);
   }
   
-  public static ASObject DISCONTINUED() {
+  public static final ASObject DISCONTINUED = DISCONTINUED().get();
+  public static final ASObject INSTOCK = INSTOCK().get();
+  public static final ASObject INSTOREONLY = INSTOREONLY().get();
+  public static final ASObject ONLINEONLY = ONLINEONLY().get();
+  public static final ASObject OUTOFSTOCK = OUTOFSTOCK().get();
+  public static final ASObject PREORDER = PREORDER().get();
+  public static final ASObject EBOOK = EBOOK().get();
+  public static final ASObject HARDCOVER = HARDCOVER().get();
+  public static final ASObject PAPERBACK = PAPERBACK().get();
+  public static final ASObject DAMAGED = DAMAGED().get();
+  public static final ASObject NEW = NEW().get();
+  public static final ASObject REFURBISHED = REFURBISHED().get();
+  public static final ASObject USED = USED().get();
+  
+  public static ASObjectBuilder DISCONTINUED() {
     return anonymousObject("discontinued");
   }
   
-  public static ASObject INSTOCK() {
+  public static ASObjectBuilder INSTOCK() {
     return anonymousObject("in-stock");
   }
   
-  public static ASObject INSTOREONLY() {
+  public static ASObjectBuilder INSTOREONLY() {
     return anonymousObject("in-store-only");
   }
   
-  public static ASObject ONLINEONLY() {
+  public static ASObjectBuilder ONLINEONLY() {
     return anonymousObject("online-only");
   }
   
-  public static ASObject OUTOFSTOCK() {
+  public static ASObjectBuilder OUTOFSTOCK() {
     return anonymousObject("out-of-stock");
   }
   
-  public static ASObject PREORDER() {
+  public static ASObjectBuilder PREORDER() {
     return anonymousObject("pre-order");
   }
   
-  public static ASObject EBOOK() {
+  public static ASObjectBuilder EBOOK() {
     return anonymousObject("ebook");
   }
   
-  public static ASObject HARDCOVER() {
+  public static ASObjectBuilder HARDCOVER() {
     return anonymousObject("hardcover");
   }
   
-  public static ASObject PAPERBACK() {
+  public static ASObjectBuilder PAPERBACK() {
     return anonymousObject("paperback");
   }
   
-  public static ASObject DAMAGED() {
+  public static ASObjectBuilder DAMAGED() {
     return anonymousObject("damaged");
   }
   
-  public static ASObject NEW() {
+  public static ASObjectBuilder NEW() {
     return anonymousObject("new");
   }
   
-  public static ASObject REFURBISHED() {
+  public static ASObjectBuilder REFURBISHED() {
     return anonymousObject("refurbished");
   }
   
-  public static ASObject USED() {
+  public static ASObjectBuilder USED() {
     return anonymousObject("used");
   }
-
   
 }