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/12 23:10:29 UTC
svn commit: r1201343 - in /abdera/abdera2:
activities/src/main/java/org/apache/abdera2/activities/model/objects/
common/src/main/java/org/apache/abdera2/common/security/
examples/src/main/java/org/apache/abdera2/examples/activities/
Author: jmsnell
Date: Sat Nov 12 22:10:28 2011
New Revision: 1201343
URL: http://svn.apache.org/viewvc?rev=1201343&view=rev
Log: (empty)
Modified:
abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AdditionalEventProperties.java
abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/HashHelper.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
Modified: abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AdditionalEventProperties.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AdditionalEventProperties.java?rev=1201343&r1=1201342&r2=1201343&view=diff
==============================================================================
--- abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AdditionalEventProperties.java (original)
+++ abdera/abdera2/activities/src/main/java/org/apache/abdera2/activities/model/objects/AdditionalEventProperties.java Sat Nov 12 22:10:28 2011
@@ -18,7 +18,8 @@
package org.apache.abdera2.activities.model.objects;
import org.apache.abdera2.activities.model.ASObject;
-
+import org.apache.abdera2.activities.extra.Extra.ExtensionObject;
+import org.apache.abdera2.activities.extra.Extra.ExtensionBuilder;
/**
* Additional extension properties for the EventObject...
* attach this interface to an EventObject using the
@@ -29,14 +30,16 @@ import org.apache.abdera2.activities.mod
* avp.setOffers(...);
* ...
*/
-public interface AdditionalEventProperties {
+public interface AdditionalEventProperties
+ extends ExtensionObject {
<T extends ASObject>T getHost();
<T extends ASObject>T getOffers();
<T extends ASObject>T getSubEvents();
<T extends ASObject>T getSuperEvent();
<T extends ASObject>T getPerformers();
- public static interface Builder {
+ public static interface Builder
+ extends ExtensionBuilder {
Builder host(ASObject host);
Builder offers(ASObject offers);
Builder subEvents(ASObject subEvents);
Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/HashHelper.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/HashHelper.java?rev=1201343&r1=1201342&r2=1201343&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/HashHelper.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/security/HashHelper.java Sat Nov 12 22:10:28 2011
@@ -29,6 +29,7 @@ import java.util.Arrays;
import javax.crypto.Mac;
import org.apache.abdera2.common.misc.ExceptionHelper;
+import org.apache.abdera2.common.selector.AbstractSelector;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;
@@ -126,7 +127,8 @@ public final class HashHelper {
}
}
- public static abstract class Hasher
+ public static abstract class Hasher
+ extends AbstractSelector<String>
implements Supplier<String> {
public <T extends Hasher>T update(byte[] buf) {
update(buf,0,buf.length);
@@ -140,6 +142,11 @@ public final class HashHelper {
public String name() {
return getClass().getSimpleName().toLowerCase();
}
+ // checks to see if the passed in hash matches this one
+ public boolean select(Object check) {
+ if (check == null) return false;
+ return get().equalsIgnoreCase(check.toString());
+ }
}
public static Function<byte[],String> md5() {
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=1201343&r1=1201342&r2=1201343&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 Sat Nov 12 22:10:28 2011
@@ -4,6 +4,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.apache.abdera2.activities.model.Activity;
+import org.apache.abdera2.activities.model.Activity.ActivityBuilder;
import org.apache.abdera2.activities.model.Collection;
import org.apache.abdera2.activities.model.IO;
import static org.apache.abdera2.activities.model.Verb.FOLLOW;
@@ -12,15 +13,24 @@ import static org.apache.abdera2.activit
public class Activities {
+
+ // The IO class is the main component for parsing/serializing
+ // acivity streams objects. They are immutable and threadsafe
+ // and can be safely set within a static final variable.
+ //
+ // Each IO Instance has it's own configuration of type adapters
+ // and property registrations that tell the deserializer how
+ // to interpret the input data. A single application can
+ // utilize many individual IO instances if necessary, but
+ // for most applications, one is all you'll ever actually need
+ private static final IO io = IO.get();
+
+
public static void main(String... args) throws Exception {
- // Simple Activities Example
- IO io = IO.get();
-
-
// A simple fluent factory model can be used to create
// activities and their associated objects... several
- // of the methods here are statically imported so be
+ // of the methods used here are statically imported so be
// sure to take a look at the import statements at
// the top of the class to see where various bits are
// coming from.
@@ -31,15 +41,11 @@ public class Activities {
// once created
Activity activity =
makeActivity()
- .actor(
- makePerson()
- .displayName("James")
- .get())
+ .actor(makePerson("James").get())
.verb(FOLLOW)
.object(
- makePerson()
+ makePerson("John Doe")
.email("john.doe@example.org")
- .displayName("John Doe")
.get())
.get();
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=1201343&r1=1201342&r2=1201343&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 Sat Nov 12 22:10:28 2011
@@ -22,12 +22,11 @@ import static org.apache.abdera2.activit
*/
public class BinaryDataObjectExample {
+ private final static IO io = IO.get();
+
public static void main(String... args) throws Exception {
- IO io = IO.get();
-
// First prepare the data we wish to include
- // within the object...
URL url = BinaryDataObjectExample.class.getResource("/info.png");
DataHandler dataHandler = new DataHandler(url);
@@ -37,7 +36,7 @@ public class BinaryDataObjectExample {
.attachment(
makeBinary()
.data(
- dataHandler,
+ dataHandler, // the data will be automatically base64 encoded
new Md5(), // generate an md5 hash and set an "md5" property.. we could also do an hmac here
DEFLATE) // apply deflate compression to the data before encoding it
.get())
@@ -63,8 +62,7 @@ public class BinaryDataObjectExample {
check.update(buf, 0, r);
// check the md5 hash to show that the input data and output data are the same
- String checks = check.get();
- System.out.println(checks.equalsIgnoreCase(md5));
+ check.checkElement(md5);
}
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=1201343&r1=1201342&r2=1201343&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 Sat Nov 12 22:10:28 2011
@@ -1,11 +1,11 @@
package org.apache.abdera2.examples.activities;
-import org.apache.abdera2.activities.model.Collection;
import org.apache.abdera2.activities.model.IO;
-import org.apache.abdera2.activities.model.objects.EventObject;
import org.apache.abdera2.activities.model.objects.AdditionalEventProperties;
import org.apache.abdera2.activities.model.objects.EventObject.EventBuilder;
-import org.apache.abdera2.activities.model.objects.PersonObject;
+import static org.apache.abdera2.activities.model.objects.EventObject.makeEvent;
+import static org.apache.abdera2.activities.model.Collection.makeCollection;
+import static org.apache.abdera2.activities.model.objects.PersonObject.makePerson;
/**
* Quick example that shows how new object types can be
@@ -17,24 +17,19 @@ import org.apache.abdera2.activities.mod
public class ExtendingBaseObjectExample {
public static void main(String... args) throws Exception {
- IO io = IO.get();
- EventBuilder builder =
- EventObject.makeEvent("hangout");
- // the extend method dynamically attaches a new interface
- // to the object that can be used to specify extension
- // properties in a typesafe manner
- builder.extend(
- AdditionalEventProperties.Builder.class)
- .host(PersonObject.makePerson().displayName("James").get());
- builder.attending(
- Collection.makeCollection()
- .item(
- PersonObject
- .makePerson()
- .displayName("Joe")
- .get())
- .get());
- io.write(builder.get(),System.out,"UTF-8");
+ makeEvent("hangout")
+ .extend( // dynamically extend the builder using the specified interface...
+ AdditionalEventProperties.Builder.class)
+ .host(makePerson("James").get())
+ .performers(makePerson("Bob").get())
+ .<EventBuilder>unwrap()
+ .attending(
+ makeCollection()
+ .item(makePerson("Joe").get())
+ .get()).get().writeTo(
+ IO.get(),
+ System.out,
+ "UTF-8");
}
}