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/02 19:52:17 UTC
svn commit: r1196760 - in /abdera/abdera2:
activities/src/main/java/org/apache/abdera2/activities/extra/
activities/src/main/java/org/apache/abdera2/activities/io/gson/
activities/src/main/java/org/apache/abdera2/activities/model/
activities/src/main/j...
Author: jmsnell
Date: Wed Nov 2 18:52:16 2011
New Revision: 1196760
URL: http://svn.apache.org/viewvc?rev=1196760&view=rev
Log:
some additional refactoring
Added:
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BinaryObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BookObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/CreativeWork.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ExtendedEventObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ExtendedEventObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/MovieObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java (with props)
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/OfferObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/OfferObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvEpisodeObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvEpisodeObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeasonObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeasonObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeriesObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeriesObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/VersionObject.java (contents, props changed)
- copied, changed from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/VersionObject.java
Removed:
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BinaryObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BookObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/CreativeWork.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ExtendedEventObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/MovieObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/OfferObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvEpisodeObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeasonObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeriesObject.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/VersionObject.java
Modified:
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ASContext.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/Extra.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/io/gson/BaseAdapter.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/ASBase.java
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/Verb.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/ApiKey.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/KeyBase.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/Otp.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/Activities.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/BinaryDataObjectExample.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ExtendingBaseObjectExample.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/VersionControlExample.java
Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ASContext.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ASContext.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ASContext.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ASContext.java Wed Nov 2 18:52:16 2011
@@ -29,9 +29,8 @@ public final class ASContext
@SuppressWarnings({ "unchecked", "rawtypes" })
public <T> T resolve(String var) {
Object obj = base.getProperty(var);
- if (obj instanceof Iterable) {
+ if (obj instanceof Iterable)
return (T)new IterableWrapper((Iterable)obj);
- }
return obj instanceof ASBase ?
(T)new ASContext((ASBase)obj) :
(T)base.getProperty(var);
Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/Extra.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/Extra.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/Extra.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/Extra.java Wed Nov 2 18:52:16 2011
@@ -7,15 +7,14 @@ import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
+import org.apache.abdera2.activities.model.ASBase;
import org.apache.abdera2.activities.model.ASObject;
import org.apache.abdera2.activities.model.Activity;
import org.apache.abdera2.activities.model.Activity.Audience;
-import org.apache.abdera2.activities.model.IO;
import org.apache.abdera2.activities.model.Verb;
import org.apache.abdera2.common.anno.AnnoUtil;
import org.apache.abdera2.common.anno.Name;
import org.apache.abdera2.common.date.DateTimes;
-import org.apache.abdera2.common.misc.MoreFunctions;
import org.apache.abdera2.common.selector.AbstractSelector;
import org.apache.abdera2.common.selector.PropertySelector;
import org.apache.abdera2.common.selector.Selector;
@@ -28,14 +27,22 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
+
+import static org.apache.abdera2.activities.model.objects.Objects.*;
+import static org.apache.abdera2.common.misc.Comparisons.*;
import static com.google.common.base.Preconditions.*;
+
/**
* Miscellaneous extensions
*/
@SuppressWarnings("unchecked")
public class Extra {
+ /**
+ * Returns a Selector that tests whether the provided
+ * activity uses the given Verb.
+ */
public static Selector<Activity> usesVerb(Verb verb) {
return PropertySelector.<Activity>create(
Activity.class,
@@ -43,21 +50,39 @@ public class Extra {
Predicates.equalTo(verb));
}
- public static <A extends ASObject>Selector<A> published(Class<A> _class, Predicate<?> predicate) {
+ /**
+ * Returns a selector that tests the given Objects "published" property.
+ * This can typically be used with the various Range predicates provided
+ * by the (@see org.apache.abdera2.common.date.DateTimes) class
+ */
+ public static <A extends ASObject>Selector<A> published(
+ Class<A> _class,
+ Predicate<?> predicate) {
return PropertySelector.<A>create(
_class,
"getPublished",
predicate);
}
+ /**
+ * Returns a selector that tests the given Activities "published" property.
+ */
public static Selector<Activity> activityPublished(Predicate<DateTime> predicate) {
return published(Activity.class,predicate);
}
+ /**
+ * Returns a selector that tests the given Objects "published" property
+ */
public static Selector<ASObject> objectPublished(Predicate<DateTime> predicate) {
return published(ASObject.class,predicate);
}
+ /**
+ * Returns a Selector that tests the given Objects "updated" property.
+ * This can typically be used with the various Range predicates provided
+ * by the (@see org.apache.abder2.common.date.DateTimes) class
+ */
public static <A extends ASObject>Selector<A> updated(Class<A> _class, Predicate<DateTime> predicate) {
return PropertySelector.<A>create(
_class,
@@ -65,71 +90,20 @@ public class Extra {
predicate);
}
+ /**
+ * Returns a Selector that tests the given Activities "updated" property.
+ */
public static Selector<Activity> activityUpdated(Predicate<DateTime> predicate) {
return updated(Activity.class,predicate);
}
- public static Selector<ASObject> objectUpdated(Predicate<DateTime> predicate) {
- return updated(ASObject.class,predicate);
- }
-
- // As in "Sally purchased the app"
- public static final Verb PURCHASE = new Verb("purchase") {};
-
- // As in: "Joe is hosting a meeting"
- public static final Verb HOST = new Verb("host") {};
-
- // As in: "Mark read the book" ... this is related to "play", but saying that
- // someone "played" a book just doesn't make much sense. A user can
- // "play" and audio book, but they must "read" the physical or ebook,
- // also works for "Mark read the note", "Sally read the question", etc
- public static final Verb READ = new Verb("read") {};
-
- // As in "Sally approved the line item"
- public static final Verb APPROVE = new Verb("approve") {};
-
- // As in "Sally rejected the line item"
- public static final Verb REJECT = new Verb("reject") {};
-
- // As in "Sally archived the document"
- public static final Verb ARCHIVE = new Verb("archive") {};
-
- // As in "Mark installed the app"
- public static final Verb INSTALL = new Verb("install") {};
-
- // As in "Mark closed the issue"
- public static final Verb CLOSE = new Verb("close") {};
-
- // As in "Mark opened the issue" .. careful not to confuse this with
- // creating an issue, for instance. For example, in source code
- // management, creating a new issue and "opening" it are two separate
- // tasks. An item can be opened automatically when it is created,
- // closed, and then opened again if it is determined to not have been
- // resolved, etc.
- public static final Verb OPEN = new Verb("open") {};
-
- // As in "Mark resolved the issue" .. careful not to confuse this with
- // updating the issue or closing it.
- public static final Verb RESOLVE = new Verb("resolve") {};
-
-
/**
- * Registers the "extra" object types with the IO instance
- * for serialization/deserialization.
+ * Returns a Selector that tests the given Objects "updated" property
*/
- public static void initExtras(IO io) {
-
- io.addObjectMapping(
- BookObject.class,
- MovieObject.class,
- OfferObject.class,
- TvEpisodeObject.class,
- TvSeasonObject.class,
- TvSeriesObject.class,
- VersionObject.class,
- BinaryObject.class);
+ public static Selector<ASObject> objectUpdated(Predicate<DateTime> predicate) {
+ return updated(ASObject.class,predicate);
}
-
+
public static Selector<Activity> isTo(ASObject obj) {
return Extra.audienceHas(Audience.TO, sameIdentity(obj));
}
@@ -577,123 +551,6 @@ public class Extra {
}
/**
- * Special AS Object that represents the authenticated user
- */
- public static ASObject SELF() {
- return new ASObject("@self");
- }
-
- /**
- * Special AS Object that represents the authenticated user.
- * synonymous with @self
- */
- public static ASObject ME() {
- return new ASObject("@me");
- }
-
- /**
- * Special AS Object that represents the authenticated users
- * collection of direct contacts
- */
- public static ASObject FRIENDS() {
- return new ASObject("@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;
- }
-
- /**
- * 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");
- }
-
- /**
- * Special AS Object that represents everyone. synonymous with @public
- */
- public static ASObject ALL() {
- return new ASObject("@all");
- }
-
- /**
- * Special AS Object that represents everyone
- */
- public static ASObject PUBLIC() {
- return new ASObject("@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 ASObject DISCONTINUED() {
- return anonymousObject("discontinued");
- }
-
- public static ASObject INSTOCK() {
- return anonymousObject("in-stock");
- }
-
- public static ASObject INSTOREONLY() {
- return anonymousObject("in-store-only");
- }
-
- public static ASObject ONLINEONLY() {
- return anonymousObject("online-only");
- }
-
- public static ASObject OUTOFSTOCK() {
- return anonymousObject("out-of-stock");
- }
-
- public static ASObject PREORDER() {
- return anonymousObject("pre-order");
- }
-
- public static ASObject EBOOK() {
- return anonymousObject("ebook");
- }
-
- public static ASObject HARDCOVER() {
- return anonymousObject("hardcover");
- }
-
- public static ASObject PAPERBACK() {
- return anonymousObject("paperback");
- }
-
- public static ASObject DAMAGED() {
- return anonymousObject("damaged");
- }
-
- public static ASObject NEW() {
- return anonymousObject("new");
- }
-
- public static ASObject REFURBISHED() {
- return anonymousObject("refurbished");
- }
-
- public static ASObject USED() {
- return anonymousObject("used");
- }
-
- /**
* Returns a Selector that tests if two objects are identity equivalent.
* ASObjets are identity equivalent if they have the same objectType
* and id property values.
@@ -722,20 +579,18 @@ public class Extra {
private static Equivalence<ASObject> identity() {
return new Equivalence<ASObject>() {
protected boolean doEquivalent(ASObject a, ASObject b) {
- if (a != null && b == null) return false;
- if (a == null && b != null) return false;
+ if (bothAreNull(a,b)) return true;
+ if (onlyOneIsNull(a,b)) return false;
String aot = a.getObjectType();
String bot = b.getObjectType();
- if (aot != null && bot == null) return false;
- if (aot == null && bot != null) return false;
- if (aot != null)
- if (!aot.equalsIgnoreCase(bot)) return false;
+ if (bothAreNull(aot,bot)) return true;
+ if (onlyOneIsNull(aot,bot)) return false;
+ if (!aot.equalsIgnoreCase(bot)) return false;
String aid = a.getId();
String bid = b.getId();
- if (aid != null && bid == null) return false;
- if (aid == null && bid != null) return false;
- if (aid != null)
- if (!aid.equals(bid)) return false;
+ if (bothAreNull(aid,bid)) return true;
+ if (onlyOneIsNull(aid,bid)) return false;
+ if (!aid.equals(bid)) return false;
return true;
}
protected int doHash(ASObject t) {
@@ -768,50 +623,18 @@ public class Extra {
private static class PublishedComparator
extends DateTimes.DateTimeComparator<ASObject> {
public int compare(ASObject a1, ASObject a2) {
- DateTime d1 = a1.getPublished();
- DateTime d2 = a2.getPublished();
- return innerCompare(d1,d2);
+ return innerCompare(
+ a1.getPublished(),
+ a2.getPublished());
}
}
- private static String get_name(Method obj) {
- String name = null;
- if (obj.isAnnotationPresent(Name.class))
- name = obj.getAnnotation(Name.class).value();
- else {
- name = obj.getName();
- if (name.startsWith("get") ||
- name.startsWith("set"))
- name = name.substring(3);
- name = CaseFormat.UPPER_CAMEL.to(
- CaseFormat.LOWER_CAMEL, name);
- }
- return name;
- }
-
- /**
- * Uses cglib to create an extension of the base ASObject type
- * that implements the given interface. All setter/getter methods
- * on the supplied interface will be mapped to properties on the
- * underlying ASObject.. for instance, getFoo() and setFoo(..) will
- * be mapped to a "foo" property
- */
- public static <T>T extend(
- Class<T> type,
- Class<? extends ASObject> base) {
- checkNotNull(type);
- Enhancer e = new Enhancer();
- if (type.isInterface()) {
- e.setSuperclass(base);
- e.setInterfaces(MoreFunctions.array(type));
- } else if (ASObject.class.isAssignableFrom(type)) {
- e.setSuperclass(type);
- }
- e.setCallback(new ExtensionObjectProxy(type,base));
- ASObject obj = (ASObject) e.create();
- obj.setObjectType(AnnoUtil.getName(type));
- return type.cast(obj);
+ private static Class<?>[] addin(Class<?>[] types, Class<?> type) {
+ Class<?>[] ntypes = new Class<?>[types.length+1];
+ System.arraycopy(types, 0, ntypes, 0, types.length);
+ ntypes[ntypes.length-1] = type;
+ return ntypes;
}
/**
@@ -821,30 +644,31 @@ public class Extra {
* underlying ASObject.. for instance, getFoo() and setFoo(..) will
* be mapped to a "foo" property
*/
- public static <T>T extend(Class<T> type) {
+ public static <X extends ASBase,M>M extend(
+ X object,
+ Class<?> type) {
checkNotNull(type);
+ checkNotNull(object);
Enhancer e = new Enhancer();
if (type.isInterface()) {
- e.setSuperclass(ASObject.class);
- e.setInterfaces(MoreFunctions.array(type));
+ e.setSuperclass(type);
+ e.setInterfaces(addin(object.getClass().getInterfaces(),type));
} else if (ASObject.class.isAssignableFrom(type)) {
e.setSuperclass(type);
}
- e.setCallback(new ExtensionObjectProxy(type));
- ASObject obj = (ASObject) e.create();
- obj.setObjectType(type.getSimpleName().toLowerCase());
- return type.cast(obj);
+ e.setCallback(new ExtensionWrapper(type,object));
+ object.setProperty("objectType",AnnoUtil.getName(type));
+ return (M)e.create();
}
- private static class ExtensionObjectProxy
+
+ private static class ExtensionWrapper
implements MethodInterceptor {
private final Class<?> type;
- private final Class<?> base;
- ExtensionObjectProxy(Class<?> type) {
- this.type = type;
- this.base = type;
- }
- ExtensionObjectProxy(Class<?> type, Class<?> base) {
+ private final ASBase base;
+ ExtensionWrapper(
+ Class<?> type,
+ ASBase base) {
this.type = type;
this.base = base;
}
@@ -854,9 +678,7 @@ public class Extra {
Object[] args,
MethodProxy proxy)
throws Throwable {
- ASObject as = (ASObject) obj;
- if (method.getDeclaringClass().equals(type) ||
- method.getDeclaringClass().equals(base)) {
+ if (method.getDeclaringClass().equals(type)) {
boolean setter =
method.getName().matches("[Ss]et.+") ||
(void.class.isAssignableFrom(method.getReturnType()) &&
@@ -865,12 +687,27 @@ public class Extra {
if (setter) {
if (args.length != 1)
throw new IllegalArgumentException();
- as.setProperty(name,args[0]);
+ base.setProperty(name,args[0]);
return null;
} else {
- return method.getReturnType().cast(as.getProperty(name));
+ return method.getReturnType().cast(base.getProperty(name));
}
- } else return proxy.invokeSuper(obj, args);
+ } else return proxy.invokeSuper(base, args);
}
}
+
+ private static String get_name(Method obj) {
+ String name = null;
+ if (obj.isAnnotationPresent(Name.class))
+ name = obj.getAnnotation(Name.class).value();
+ else {
+ name = obj.getName();
+ if (name.startsWith("get") ||
+ name.startsWith("set"))
+ name = name.substring(3);
+ name = CaseFormat.UPPER_CAMEL.to(
+ CaseFormat.LOWER_CAMEL, name);
+ }
+ return name;
+ }
}
Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/io/gson/BaseAdapter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/io/gson/BaseAdapter.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/io/gson/BaseAdapter.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/io/gson/BaseAdapter.java Wed Nov 2 18:52:16 2011
@@ -38,6 +38,8 @@ import org.apache.abdera2.activities.mod
import org.apache.abdera2.activities.model.objects.ArticleObject;
import org.apache.abdera2.activities.model.objects.AudioObject;
import org.apache.abdera2.activities.model.objects.BadgeObject;
+import org.apache.abdera2.activities.model.objects.BinaryObject;
+import org.apache.abdera2.activities.model.objects.BookObject;
import org.apache.abdera2.activities.model.objects.BookmarkObject;
import org.apache.abdera2.activities.model.objects.CommentObject;
import org.apache.abdera2.activities.model.objects.EventObject;
@@ -45,8 +47,10 @@ import org.apache.abdera2.activities.mod
import org.apache.abdera2.activities.model.objects.GroupObject;
import org.apache.abdera2.activities.model.objects.ImageObject;
import org.apache.abdera2.activities.model.objects.Mood;
+import org.apache.abdera2.activities.model.objects.MovieObject;
import org.apache.abdera2.activities.model.objects.NameObject;
import org.apache.abdera2.activities.model.objects.NoteObject;
+import org.apache.abdera2.activities.model.objects.OfferObject;
import org.apache.abdera2.activities.model.objects.OrganizationObject;
import org.apache.abdera2.activities.model.objects.PersonObject;
import org.apache.abdera2.activities.model.objects.PlaceObject;
@@ -54,6 +58,10 @@ import org.apache.abdera2.activities.mod
import org.apache.abdera2.activities.model.objects.QuestionObject;
import org.apache.abdera2.activities.model.objects.ReviewObject;
import org.apache.abdera2.activities.model.objects.ServiceObject;
+import org.apache.abdera2.activities.model.objects.TvEpisodeObject;
+import org.apache.abdera2.activities.model.objects.TvSeasonObject;
+import org.apache.abdera2.activities.model.objects.TvSeriesObject;
+import org.apache.abdera2.activities.model.objects.VersionObject;
import org.apache.abdera2.activities.model.objects.VideoObject;
import org.apache.abdera2.activities.protocol.ErrorObject;
import org.joda.time.DateTime;
@@ -147,7 +155,16 @@ public class BaseAdapter
ErrorObject.class,
NameObject.class,
AccountObject.class,
- OrganizationObject.class);
+ OrganizationObject.class,
+ BookObject.class,
+ MovieObject.class,
+ OfferObject.class,
+ TvEpisodeObject.class,
+ TvSeasonObject.class,
+ TvSeriesObject.class,
+ VersionObject.class,
+ BinaryObject.class
+ );
}
private static void processType(
@@ -205,19 +222,19 @@ public class BaseAdapter
throws JsonParseException {
JsonObject obj = (JsonObject)el;
ASBase base = null;
- if (type == Collection.class) {
+ if (type == Collection.class)
base = new Collection<ASObject>();
- } else if (type == Activity.class) {
+ else if (type == Activity.class)
base = new Activity();
- } else if (type == MediaLink.class) {
+ else if (type == MediaLink.class)
base = new MediaLink();
- } else if (type == PlaceObject.class) {
+ else if (type == PlaceObject.class)
base = new PlaceObject();
- } else if (type == Mood.class) {
+ else if (type == Mood.class)
base = new Mood();
- } else if (type == Address.class) {
+ else if (type == Address.class)
base = new Address();
- } else {
+ else {
JsonPrimitive ot = obj.getAsJsonPrimitive("objectType");
if (ot != null) {
String ots = ot.getAsString();
@@ -232,7 +249,7 @@ public class BaseAdapter
} else {
if (obj.has("verb") && (obj.has("actor") || obj.has("object") || obj.has("target"))) {
base = new Activity();
- } else if (obj.has("items") && obj.has("totalItems")) {
+ } else if (obj.has("items")) {
base = new Collection<ASObject>();
} else {
base = new ASObject(); // anonymous object
Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/ASBase.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/ASBase.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/ASBase.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/ASBase.java Wed Nov 2 18:52:16 2011
@@ -29,12 +29,14 @@ import java.util.Map;
import javax.activation.MimeType;
+import org.apache.abdera2.activities.extra.Extra;
import org.apache.abdera2.activities.model.Generator.Copyable;
import org.apache.abdera2.common.http.EntityTag;
import org.apache.abdera2.common.iri.IRI;
import org.apache.abdera2.common.lang.Lang;
import org.apache.abdera2.common.mediatype.MimeTypeParseException;
+import static com.google.common.base.Preconditions.*;
import com.google.common.base.Function;
/**
@@ -108,11 +110,13 @@ public class ASBase
return true;
}
+ /**
+ * if we already implement the type, just return
+ * a cast to that type... otherwise, create a
+ * new instance and copy all the properties over
+ **/
public <T extends ASBase>T as(Class<T> type) {
try {
- // if we already implement the type, just return
- // casted as that type... otherwise, create a
- // new instance and copy all the properties over
if (type.isAssignableFrom(this.getClass()))
return type.cast(this);
ASBase t = type.newInstance();
@@ -128,6 +132,20 @@ public class ASBase
throw new RuntimeException(t);
}
}
+
+ /**
+ * Returns this object wrapped with the specified interface.
+ * The argument MUST be an interface. This is used as a means
+ * of extending the object in a type-safe manner. Instead of
+ * calling setProperty("foo","bar"), you can define an
+ * extension interface with the methods setFoo(String m) and
+ * getFoo().. so that obj.extend(MyExt.class).setFoo("bar")
+ * will set the "foo" property.
+ */
+ public <T>T extend(Class<T> as) {
+ checkArgument(as.isInterface(),"Extension is not an interface!");
+ return Extra.extend(this,as);
+ }
public String toString() {
return IO.get().write(this);
Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/Verb.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/Verb.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/Verb.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/Verb.java Wed Nov 2 18:52:16 2011
@@ -68,6 +68,18 @@ public abstract class Verb {
public static final Verb UNSAVE = new Verb("unsave") {};
public static final Verb UPDATE = new Verb("update") {};
+
+ public static final Verb PURCHASE = new Verb("purchase") {};
+ public static final Verb CONSUME = new Verb("consume") {};
+ public static final Verb HOST = new Verb("host") {};
+ public static final Verb READ = new Verb("read") {};
+ public static final Verb APPROVE = new Verb("approve") {};
+ public static final Verb REJECT = new Verb("reject") {};
+ public static final Verb ARCHIVE = new Verb("archive") {};
+ public static final Verb INSTALL = new Verb("install") {};
+ public static final Verb CLOSE = new Verb("close") {};
+ public static final Verb OPEN = new Verb("open") {};
+ public static final Verb RESOLVE = new Verb("resolve") {};
private final String name;
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BinaryObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BinaryObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BinaryObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java Wed Nov 2 18:52:16 2011
@@ -1,4 +1,4 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -11,7 +11,6 @@ import javax.activation.MimeType;
import org.apache.abdera2.activities.io.gson.Properties;
import org.apache.abdera2.activities.io.gson.Property;
-import org.apache.abdera2.activities.model.objects.FileObject;
import org.apache.abdera2.common.anno.Name;
import org.apache.abdera2.common.io.Compression;
import org.apache.abdera2.common.io.Compression.CompressionCodec;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BinaryObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BookObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BookObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/BookObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java Wed Nov 2 18:52:16 2011
@@ -1,4 +1,4 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.model.ASObject;
import org.apache.abdera2.common.anno.Name;
@@ -35,12 +35,20 @@ public class BookObject extends Creative
setProperty("edition", edition);
}
- public String getIsbn() {
- return getProperty("isbn");
+ public String getIsbn10() {
+ return getProperty("isbn10");
}
- public void setIsbn(String isbn) {
- setProperty("isbn", isbn);
+ 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() {
@@ -84,8 +92,8 @@ public class BookObject extends Creative
item.setIllustrator(obj);
return (X)this;
}
- public <X extends BookObjectGenerator<T>>X isbn(String val) {
- item.setIsbn(val);
+ public <X extends BookObjectGenerator<T>>X isbn10(String val) {
+ item.setIsbn10(val);
return (X)this;
}
public <X extends BookObjectGenerator<T>>X pageCount(int count) {
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/BookObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/CreativeWork.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/CreativeWork.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/CreativeWork.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java Wed Nov 2 18:52:16 2011
@@ -1,4 +1,4 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.model.ASObject;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/CreativeWork.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ExtendedEventObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ExtendedEventObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ExtendedEventObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ExtendedEventObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ExtendedEventObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/ExtendedEventObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ExtendedEventObject.java Wed Nov 2 18:52:16 2011
@@ -1,7 +1,6 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.model.ASObject;
-import org.apache.abdera2.activities.model.objects.EventObject;
/**
* Abstract extension of the basic event object type that adds
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/ExtendedEventObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/MovieObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/MovieObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/MovieObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java Wed Nov 2 18:52:16 2011
@@ -1,4 +1,4 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.io.gson.Properties;
import org.apache.abdera2.activities.io.gson.Property;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/MovieObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: 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=1196760&view=auto
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java (added)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java Wed Nov 2 18:52:16 2011
@@ -0,0 +1,125 @@
+package org.apache.abdera2.activities.model.objects;
+
+import org.apache.abdera2.activities.model.ASObject;
+
+public class Objects {
+
+ /**
+ * Special AS Object that represents the authenticated user
+ */
+ public static ASObject SELF() {
+ return new ASObject("@self");
+ }
+
+ /**
+ * Special AS Object that represents the authenticated user.
+ * synonymous with @self
+ */
+ public static ASObject ME() {
+ return new ASObject("@me");
+ }
+
+ /**
+ * Special AS Object that represents the authenticated users
+ * collection of direct contacts
+ */
+ public static ASObject FRIENDS() {
+ return new ASObject("@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;
+ }
+
+ /**
+ * 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");
+ }
+
+ /**
+ * Special AS Object that represents everyone. synonymous with @public
+ */
+ public static ASObject ALL() {
+ return new ASObject("@all");
+ }
+
+ /**
+ * Special AS Object that represents everyone
+ */
+ public static ASObject PUBLIC() {
+ return new ASObject("@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 ASObject DISCONTINUED() {
+ return anonymousObject("discontinued");
+ }
+
+ public static ASObject INSTOCK() {
+ return anonymousObject("in-stock");
+ }
+
+ public static ASObject INSTOREONLY() {
+ return anonymousObject("in-store-only");
+ }
+
+ public static ASObject ONLINEONLY() {
+ return anonymousObject("online-only");
+ }
+
+ public static ASObject OUTOFSTOCK() {
+ return anonymousObject("out-of-stock");
+ }
+
+ public static ASObject PREORDER() {
+ return anonymousObject("pre-order");
+ }
+
+ public static ASObject EBOOK() {
+ return anonymousObject("ebook");
+ }
+
+ public static ASObject HARDCOVER() {
+ return anonymousObject("hardcover");
+ }
+
+ public static ASObject PAPERBACK() {
+ return anonymousObject("paperback");
+ }
+
+ public static ASObject DAMAGED() {
+ return anonymousObject("damaged");
+ }
+
+ public static ASObject NEW() {
+ return anonymousObject("new");
+ }
+
+ public static ASObject REFURBISHED() {
+ return anonymousObject("refurbished");
+ }
+
+ public static ASObject USED() {
+ return anonymousObject("used");
+ }
+
+
+}
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/Objects.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/OfferObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/OfferObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/OfferObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/OfferObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/OfferObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/OfferObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/OfferObject.java Wed Nov 2 18:52:16 2011
@@ -1,4 +1,4 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.io.gson.Properties;
import org.apache.abdera2.activities.io.gson.Property;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/OfferObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvEpisodeObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvEpisodeObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvEpisodeObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvEpisodeObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvEpisodeObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvEpisodeObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvEpisodeObject.java Wed Nov 2 18:52:16 2011
@@ -1,9 +1,10 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
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.activities.model.MediaLink;
+import org.apache.abdera2.activities.model.objects.CreativeWork.CreativeWorkGenerator;
import org.apache.abdera2.common.anno.Name;
import org.joda.time.DateTime;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvEpisodeObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeasonObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeasonObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeasonObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeasonObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeasonObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeasonObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeasonObject.java Wed Nov 2 18:52:16 2011
@@ -1,9 +1,10 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
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.activities.model.MediaLink;
+import org.apache.abdera2.activities.model.objects.CreativeWork.CreativeWorkGenerator;
import org.apache.abdera2.common.anno.Name;
import org.joda.time.DateTime;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeasonObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeriesObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeriesObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeriesObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeriesObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeriesObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/TvSeriesObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeriesObject.java Wed Nov 2 18:52:16 2011
@@ -1,9 +1,10 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
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.activities.model.MediaLink;
+import org.apache.abdera2.activities.model.objects.CreativeWork.CreativeWorkGenerator;
import org.apache.abdera2.common.anno.Name;
import org.joda.time.DateTime;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/TvSeriesObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/VersionObject.java (from r1187146, abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/VersionObject.java)
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/VersionObject.java?p2=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/VersionObject.java&p1=abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/VersionObject.java&r1=1187146&r2=1196760&rev=1196760&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/extra/VersionObject.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/VersionObject.java Wed Nov 2 18:52:16 2011
@@ -1,4 +1,4 @@
-package org.apache.abdera2.activities.extra;
+package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.io.gson.Properties;
import org.apache.abdera2.activities.io.gson.Property;
Propchange: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/VersionObject.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/ApiKey.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/ApiKey.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/ApiKey.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/ApiKey.java Wed Nov 2 18:52:16 2011
@@ -206,7 +206,32 @@ public class ApiKey extends KeyBase {
public String get() {
return !hex ? key.generateNext() : key.generateNextHex();
}
-
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (hex ? 1231 : 1237);
+ result = prime * result + ((key == null) ? 0 : key.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;
+ ApiKeySupplier other = (ApiKeySupplier) obj;
+ if (hex != other.hex)
+ return false;
+ if (key == null) {
+ if (other.key != null)
+ return false;
+ } else if (!key.equals(other.key))
+ return false;
+ return true;
+ }
}
}
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/KeyBase.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/KeyBase.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/KeyBase.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/KeyBase.java Wed Nov 2 18:52:16 2011
@@ -97,4 +97,39 @@ public abstract class KeyBase
s = c + s;
return s;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((alg == null) ? 0 : alg.hashCode());
+ result = prime * result + ((key == null) ? 0 : key.hashCode());
+ result = prime * result + size;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ KeyBase other = (KeyBase) obj;
+ if (alg == null) {
+ if (other.alg != null)
+ return false;
+ } else if (!alg.equals(other.alg))
+ return false;
+ if (key == null) {
+ if (other.key != null)
+ return false;
+ } else if (!key.equals(other.key))
+ return false;
+ if (size != other.size)
+ return false;
+ return true;
+ }
+
}
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/Otp.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/Otp.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/Otp.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/Otp.java Wed Nov 2 18:52:16 2011
@@ -184,5 +184,28 @@ public abstract class Otp extends KeyBas
String r = Long.toHexString(t);
return dec(pad(r,16,'0'));
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + step;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Totp other = (Totp) obj;
+ if (step != other.step)
+ return false;
+ return true;
+ }
+
}
}
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/Activities.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/Activities.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/Activities.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/Activities.java Wed Nov 2 18:52:16 2011
@@ -6,7 +6,7 @@ import java.io.ByteArrayOutputStream;
import org.apache.abdera2.activities.model.Activity;
import org.apache.abdera2.activities.model.Collection;
import org.apache.abdera2.activities.model.IO;
-import org.apache.abdera2.activities.model.Verb;
+import static org.apache.abdera2.activities.model.Verb.FOLLOW;
import static org.apache.abdera2.activities.model.Activity.makeActivity;
import static org.apache.abdera2.activities.model.objects.PersonObject.makePerson;
@@ -22,7 +22,7 @@ public class Activities {
makePerson()
.displayName("James")
.get())
- .verb(Verb.FOLLOW)
+ .verb(FOLLOW)
.object(
makePerson()
.email("john.doe@example.org")
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/BinaryDataObjectExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/BinaryDataObjectExample.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/BinaryDataObjectExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/BinaryDataObjectExample.java Wed Nov 2 18:52:16 2011
@@ -6,16 +6,14 @@ import java.net.URL;
import javax.activation.DataHandler;
-import org.apache.abdera2.activities.extra.BinaryObject;
-import org.apache.abdera2.activities.extra.Extra;
import org.apache.abdera2.activities.model.IO;
import org.apache.abdera2.activities.model.objects.BadgeObject;
-import org.apache.abdera2.common.io.Compression.CompressionCodec;
-import org.apache.abdera2.common.security.HashHelper;
+import org.apache.abdera2.activities.model.objects.BinaryObject;
-
-import static org.apache.abdera2.activities.extra.BinaryObject.makeBinary;
+import static org.apache.abdera2.common.io.Compression.CompressionCodec.DEFLATE;
+import static org.apache.abdera2.common.security.HashHelper.Md5;
import static org.apache.abdera2.activities.model.objects.BadgeObject.makeBadge;
+import static org.apache.abdera2.activities.model.objects.BinaryObject.makeBinary;
/**
* Illustrates the extension "binary" objectType... this can be useful,
@@ -27,7 +25,6 @@ public class BinaryDataObjectExample {
public static void main(String... args) throws Exception {
IO io = IO.get();
- Extra.initExtras(io);
URL url = BinaryDataObjectExample.class.getResource("/info.png");
DataHandler dataHandler = new DataHandler(url);
@@ -38,8 +35,8 @@ public class BinaryDataObjectExample {
makeBinary()
.data(
dataHandler,
- new HashHelper.Md5(),
- CompressionCodec.DEFLATE)
+ new Md5(),
+ DEFLATE)
.get())
.get();
@@ -51,7 +48,7 @@ public class BinaryDataObjectExample {
BinaryObject dataObject = (BinaryObject) badge.getAttachments().iterator().next();
String md5 = dataObject.getProperty("md5");
- HashHelper.Md5 check = new HashHelper.Md5();
+ Md5 check = new Md5();
// decompression will be applied automatically
InputStream in = dataObject.getInputStream();
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ExtendingBaseObjectExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ExtendingBaseObjectExample.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ExtendingBaseObjectExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ExtendingBaseObjectExample.java Wed Nov 2 18:52:16 2011
@@ -1,7 +1,7 @@
package org.apache.abdera2.examples.activities;
-import org.apache.abdera2.activities.extra.ExtendedEventObject;
import org.apache.abdera2.activities.model.IO;
+import org.apache.abdera2.activities.model.objects.ExtendedEventObject;
import org.apache.abdera2.activities.model.objects.PersonObject;
import org.apache.abdera2.common.anno.Name;
@@ -25,6 +25,14 @@ public class ExtendingBaseObjectExample
hangout.setHost(new PersonObject("james"));
hangout.getAttending(true).addItem(new PersonObject("joe"));
+ // another way to extend the Activity Stream object
+ // is by using the extend() method and passing in a
+ // simple Interface...
+ OtherExtensions oe = hangout.extend(OtherExtensions.class);
+ oe.setFoo("this is the value");
+
+ // this is a type-safe alternative to using hangout.setProperty("foo","this is the value");
+
io.write(hangout,System.out,"UTF-8");
}
@@ -33,4 +41,9 @@ public class ExtendingBaseObjectExample
extends ExtendedEventObject {
private static final long serialVersionUID = -5466869609152673390L;
}
+
+ public static interface OtherExtensions {
+ public String getFoo();
+ public void setFoo(String bar);
+ }
}
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/ReadingListExample.java Wed Nov 2 18:52:16 2011
@@ -1,15 +1,17 @@
package org.apache.abdera2.examples.activities;
-import org.apache.abdera2.activities.extra.Extra;
import org.apache.abdera2.activities.model.Activity;
import org.apache.abdera2.activities.model.Collection;
import org.apache.abdera2.activities.model.Generator;
import org.apache.abdera2.activities.model.IO;
-import org.apache.abdera2.activities.model.Verb;
+import static org.apache.abdera2.activities.model.Verb.SAVE;
+import static org.apache.abdera2.activities.model.Verb.CONSUME;
+import static org.apache.abdera2.activities.model.objects.Objects.EBOOK;
+import static org.apache.abdera2.activities.model.objects.Objects.HARDCOVER;
import static org.apache.abdera2.activities.model.Activity.makeActivity;
+import static org.apache.abdera2.activities.model.objects.BookObject.makeBook;
import static org.apache.abdera2.activities.model.objects.PersonObject.makePerson;
-import static org.apache.abdera2.activities.extra.BookObject.makeBook;
import static org.apache.abdera2.activities.model.Collection.makeCollection;
/**
@@ -25,7 +27,6 @@ public class ReadingListExample {
// Building an activity stream for a reading list
IO io = IO.get();
- Extra.initExtras(io);
Generator<Activity> gen =
makeActivity()
@@ -41,18 +42,18 @@ public class ReadingListExample {
// Add a book we want to read
builder.item(
gen.startNew()
- .set("verb", Verb.SAVE)
+ .set("verb", SAVE)
.set("object",
makeBook()
.displayName("The Cat in the Hat")
.get())
- .set("format", Extra.EBOOK())
+ .set("format", EBOOK())
.complete());
// Add a book we just finished
builder.item(
gen.startNew()
- .set("verb", Extra.READ)
+ .set("verb", CONSUME)
.set("object",
makeBook()
.displayName("Meditations on the Method")
@@ -61,7 +62,7 @@ public class ReadingListExample {
.displayName("Rene Descartes")
.get())
.get())
- .set("format", Extra.HARDCOVER())
+ .set("format", HARDCOVER())
.complete());
builder.get().writeTo(io,System.out);
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/RepliesAndTargetingExample.java Wed Nov 2 18:52:16 2011
@@ -1,9 +1,10 @@
package org.apache.abdera2.examples.activities;
-import org.apache.abdera2.activities.extra.Extra;
import org.apache.abdera2.activities.model.Activity;
import org.apache.abdera2.activities.model.objects.NoteObject;
import org.apache.abdera2.activities.model.objects.PersonObject;
+import static org.apache.abdera2.activities.model.objects.Objects.FRIENDS;
+import static org.apache.abdera2.activities.model.objects.Objects.NETWORK;
public class RepliesAndTargetingExample {
@@ -12,9 +13,9 @@ public class RepliesAndTargetingExample
Activity activity =
Activity.makeActivity()
.to(new PersonObject("bob"))
- .cc(Extra.FRIENDS("Colleagues"))
+ .cc(FRIENDS("Colleagues"))
.bto(new PersonObject("sally"))
- .bcc(Extra.NETWORK())
+ .bcc(NETWORK())
.inReplyTo(
NoteObject
.makeNote()
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/VersionControlExample.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/VersionControlExample.java?rev=1196760&r1=1196759&r2=1196760&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/VersionControlExample.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/activities/VersionControlExample.java Wed Nov 2 18:52:16 2011
@@ -1,18 +1,19 @@
package org.apache.abdera2.examples.activities;
-import org.apache.abdera2.activities.extra.Extra;
-import org.apache.abdera2.activities.extra.VersionObject;
import org.apache.abdera2.activities.model.Activity;
import org.apache.abdera2.activities.model.Collection;
import org.apache.abdera2.activities.model.Generator;
-import org.apache.abdera2.activities.model.Verb;
import org.apache.abdera2.activities.model.objects.FileObject;
+import org.apache.abdera2.activities.model.objects.VersionObject;
+import static org.apache.abdera2.activities.model.Verb.POST;
+import static org.apache.abdera2.activities.model.Verb.REJECT;
+import static org.apache.abdera2.activities.model.Verb.APPROVE;
import static org.apache.abdera2.activities.model.Collection.makeCollection;
import static org.apache.abdera2.activities.model.Activity.makeActivity;
import static org.apache.abdera2.activities.model.objects.PersonObject.makePerson;
+import static org.apache.abdera2.activities.model.objects.VersionObject.makeVersion;
import static org.apache.abdera2.activities.model.objects.FileObject.makeFile;
-import static org.apache.abdera2.activities.extra.VersionObject.makeVersion;
public class VersionControlExample {
@@ -40,7 +41,7 @@ public class VersionControlExample {
builder.item(
gen.startNew()
.set("object", file)
- .set("verb", Verb.POST)
+ .set("verb", POST)
.complete());
// second, indicate that a new version was created
@@ -53,14 +54,14 @@ public class VersionControlExample {
builder.item(
gen.startNew()
.set("object", version)
- .set("verb", Verb.POST)
+ .set("verb", POST)
.complete());
// whoops, the boss rejected the new version
builder.item(
gen.startNew()
.set("object", version)
- .set("verb", Extra.REJECT)
+ .set("verb", REJECT)
.set("actor", makePerson().displayName("The Boss").get())
.set("summary", "This version is missing something")
.complete());
@@ -76,14 +77,14 @@ public class VersionControlExample {
builder.item(
gen.startNew()
.set("object", version)
- .set("verb", Verb.POST)
+ .set("verb", POST)
.complete());
// the boss approves the new version
builder.item(
gen.startNew()
.set("object", version)
- .set("verb", Extra.APPROVE)
+ .set("verb", APPROVE)
.set("actor", makePerson().displayName("The Boss").get())
.complete());