From 6b52b07b41e8a6d72b337e3662a2cce60ceadd28 Mon Sep 17 00:00:00 2001 From: Silas134469 Date: Mon, 26 Apr 2021 12:24:45 -0400 Subject: [PATCH 1/2] updated dependencies --- .editorconfig | 11 + .gitignore | 2 + README.md | 116 +-- actions/pom.xml | 78 +- .../actions/test/ActionsTest.java | 161 ++-- assembly/pom.xml | 17 +- core/pom.xml | 53 +- .../ibm/common/activitystreams/ASObject.java | 904 +++++++++--------- .../internal/ASObjectAdapter.java | 110 +-- .../activitystreams/internal/Adapters.java | 85 +- .../activitystreams/internal/GsonWrapper.java | 116 +-- .../activitystreams/internal/Model.java | 4 +- .../activitystreams/internal/Schema.java | 2 +- geo/pom.xml | 66 +- .../com/ibm/common/geojson/BoundingBox.java | 4 +- .../main/java/com/ibm/common/geojson/CRS.java | 4 +- .../com/ibm/common/geojson/GeoObject.java | 4 +- legacy/pom.xml | 56 +- pom.xml | 41 +- typext/pom.xml | 63 +- .../registry/CachingResolutionStrategy.java | 47 +- .../registry/ClasspathPreloader.java | 50 +- .../registry/DefaultResolutionStrategy.java | 87 +- .../activitystreams/registry/HttpFetch.java | 79 +- .../registry/TypeValueRegistry.java | 116 +-- 25 files changed, 1194 insertions(+), 1082 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a056b68 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +end_of_line = crlf +indent_size = 2 +indent_style = space +insert_final_newline = false +max_line_length = 120 +tab_width = 4 +trim_trailing_whitespace = true diff --git a/.gitignore b/.gitignore index 0861ab5..1365fae 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ target */.classpath */.project */.settings +*.iml +.idea diff --git a/README.md b/README.md index f583d3b..e5bff3e 100755 --- a/README.md +++ b/README.md @@ -7,22 +7,22 @@ Maven: Use Maven to build. - mvn compile -- mvn install +- mvn install - mvn -f assembly assembly:assembly ```xml com.ibm.common activitystreams - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT ``` Dependencies: -- gson 2.2.4 -- guava 16.0.1 -- joda-time 2.3 +- gson 2.8.6 +- guava 30.1.1-jre +- joda-time 2.10.10 ## Creating an Activity statement @@ -34,30 +34,30 @@ public class Example { public static void main(String... args) { - Activity activity = + Activity activity = activity() .actor(object("person").id("acct:joe@example.org")) .object(object("note").content("my note")) .verb("post") .get(); - + } - + } ``` -The library uses a consistent fluent generator pattern to construct all +The library uses a consistent fluent generator pattern to construct all object types. Once created, objects are immutable. ## Serializing and Parsing objects -The library has one job: to make it easy to create and parse Activity -Stream objects that are conformant to the Activity Streams 2.0 +The library has one job: to make it easy to create and parse Activity +Stream objects that are conformant to the Activity Streams 2.0 specification. -The IO object is used to serialize and parse Activity Stream objects. -IO objects are threadsafe and immutable so they can be safely created -once and stored as a static final constant. +The IO object is used to serialize and parse Activity Stream objects. +IO objects are threadsafe and immutable so they can be safely created +once and stored as a static final constant. ```java package com.ibm.common.activitystreams; @@ -72,25 +72,25 @@ import java.io.ByteArrayOutputStream; public class Test { private static final IO io = makeDefaultPrettyPrint(); - + public static void main(String... args) { - Activity activity = + Activity activity = activity() .actor(object("person").id("acct:joe@example.org")) .object(object("note").content("my note")) .verb("post") .get(); - - ByteArrayOutputStream out = + + ByteArrayOutputStream out = new ByteArrayOutputStream(); - + // Write it out activity.writeTo(out, io); - - ByteArrayInputStream in = + + ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); - + // Read it in activity = io.readAsActivity(in); @@ -103,13 +103,13 @@ public class Test { for (ASObject object : activity.object()) System.out.println(object.objectType().id()) // "note" - + // iterate all properties for (String key : activity) System.out.println(activity.get(key)); - + } - + } ``` @@ -118,26 +118,26 @@ All Activity Stream objects support a variety of writeTo methods. These serialize those objects as JSON to either an OutputStream, Writer or a String. You can choose to use the default IO instance or pass in an IO. Alternatively, you can use the write methods on the IO object itself to -serialize. +serialize. ## Makers and Builders -All objects use a fluent generator pattern. That is, you use a builder -object to construct immutable instances of an object. You use Makers +All objects use a fluent generator pattern. That is, you use a builder +object to construct immutable instances of an object. You use Makers classes to create instances of the builders. ```java import com.ibm.common.activitystreams.Makers; import com.ibm.common.activitystreams.ASObject; - + //... the long way... - + ASObject.Builder builder = Makers.object(); builder.id("urn:example:1") .displayName("foo") .objectType("thing"); - + ASObject obj = builder.get(); ``` @@ -146,8 +146,8 @@ By leveraging the fluent API pattern, the example above can be written as: ```java import static com.ibm.common.activitystreams.Makers.object; import com.ibm.common.activitystreams.ASObject; - - ASObject obj = + + ASObject obj = object("thing") .id("urn:example:1") .displayName("foo") @@ -161,7 +161,7 @@ Here's a slightly more complex example: import static com.ibm.common.activitystreams.Makers.object; import static com.ibm.common.activitystreams.Activity; - Activity activity = + Activity activity = activity() .verb("post") .actor( @@ -176,7 +176,7 @@ Here's a slightly more complex example: .get(); ``` -Here, we first create an Activity.Builder object (using "activity()"). We +Here, we first create an Activity.Builder object (using "activity()"). We then set the verb to "post" and set a new "person" object as the actor. Following that, we create a new "note" object and set it as the object of the activity. Finally, we call get() to create the finished Activity object. @@ -184,10 +184,10 @@ of the activity. Finally, we call get() to create the finished Activity object. ## Using Modules A Module is a package collection of extensions to the Activity Streams 2.0 -data model. The reference implementation currently provides modules for +data model. The reference implementation currently provides modules for Action Handlers, GeoJSON and Legacy Activity Streams 1.0 objectTypes. -Modules are registered when the IO object is created. For example, to +Modules are registered when the IO object is created. For example, to use the Actions module: ```java @@ -198,20 +198,20 @@ use the Actions module: //... - public static final IO io = + public static final IO io = IO.makeDefaultPrettyPrint(ActionsModule.instance); - + //... create an extension object - - ASObject httpAction = + + ASObject httpAction = httpAction("http://example.org", METHOD_POST) .auth( - "oauth2", + "oauth2", object() - .set("scopes", + .set("scopes", object() .set( - "scope.key.1", + "scope.key.1", object().set("description", "foo")))) .expects( htmlForm() @@ -229,20 +229,20 @@ use the Actions module: "urn:example:some:optional-feature") .target(TARGET_DIALOG) .get(); - + //... write the extension object out using the created IO object - java.io.ByteArrayOutputStream out = + java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream(); - + // write using the IO object httpAction.writeTo(out, io); - - java.io.ByteArrayInputStream in = + + java.io.ByteArrayInputStream in = new java.io.ByteArrayInputStream(out.toByteArray()); - + httpAction = io.read(in); - + ``` The GeoJSON module provides an implementation of the GeoJSON format. @@ -260,7 +260,7 @@ objectTypes (see https://github.com/activitystreams/activity-schema/blob/master/ ```java import com.ibm.common.activitystreams.legacy.LegacyModule; import com.ibm.common.activitystreams.IO; - + IO io = IO.makeDefault(LegacyModule.instance); ``` @@ -270,7 +270,7 @@ You can register multiple modules when the IO object is created: import com.ibm.common.activitystreams.legacy.LegacyModule; import com.ibm.common.geojson.as2.GeoModule; import com.ibm.common.activitystreams.IO; - + IO io = IO.makeDefault(LegacyModule.instance, GeoModule.instance); ``` @@ -280,18 +280,18 @@ Each of the modules is provided as separate Maven artifacts.: com.ibm.common activitystreams-actions - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT - + com.ibm.common activitystreams-geo - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT - + com.ibm.common activitystreams-legacy - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT ``` diff --git a/actions/pom.xml b/actions/pom.xml index 0d074df..8c82dbf 100644 --- a/actions/pom.xml +++ b/actions/pom.xml @@ -1,13 +1,14 @@ - + 4.0.0 com.ibm.common activitystreams - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT activitystreams-actions Activity Streams 2.0 - Actions - + Apache License, Version 2.0 @@ -15,12 +16,12 @@ repo - + UTF-8 - - + + org.apache.maven.plugins @@ -33,31 +34,43 @@ -XDignore.symbol.file public - http://www.joda.org/joda-time/apidocs http://docs.guava-libraries.googlecode.com/git-history/v16.0.1/javadoc/ - + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + maven-compiler-plugin - 2.3.2 + 3.8.1 - 1.7 - 1.7 + 1.8 + 1.8 + true - + maven-jar-plugin 2.3.1 - + ${project.build.outputDirectory}/META-INF/MANIFEST.MF - + - + org.apache.felix maven-bundle-plugin @@ -78,13 +91,12 @@ com.ibm.common.activitystreams.*, com.google.gson.*, - com.google.common.*, - org.joda.time.* + com.google.common.* - + org.apache.maven.plugins maven-assembly-plugin @@ -95,9 +107,9 @@ - + - + @@ -117,7 +129,7 @@ - + @@ -127,16 +139,16 @@ - - - - com.ibm.common - activitystreams-core - 0.0.1-SNAPSHOT - - - junit - junit - - + + + + com.ibm.common + activitystreams-core + 0.0.2-SNAPSHOT + + + junit + junit + + \ No newline at end of file diff --git a/actions/src/test/java/com/ibm/common/activitystreams/actions/test/ActionsTest.java b/actions/src/test/java/com/ibm/common/activitystreams/actions/test/ActionsTest.java index f16b84a..e31be49 100644 --- a/actions/src/test/java/com/ibm/common/activitystreams/actions/test/ActionsTest.java +++ b/actions/src/test/java/com/ibm/common/activitystreams/actions/test/ActionsTest.java @@ -1,5 +1,6 @@ package com.ibm.common.activitystreams.actions.test; +import static com.google.common.base.Throwables.throwIfUnchecked; import static com.google.common.collect.Iterables.getFirst; import static com.ibm.common.activitystreams.actions.ActionMakers.embedAction; import static com.ibm.common.activitystreams.actions.ActionMakers.htmlForm; @@ -22,7 +23,6 @@ import org.junit.Test; -import com.google.common.base.Throwables; import com.google.common.net.MediaType; import com.ibm.common.activitystreams.ASObject; import com.ibm.common.activitystreams.LinkValue; @@ -41,254 +41,255 @@ public final class ActionsTest { @Test public void roundtripHttpActionHandler2() { - + HttpActionHandler hah1 = httpAction() .url("http://example.org") .method("GET") .get(); - - HttpActionHandler hah2 = + + HttpActionHandler hah2 = roundTrip2(hah1); - + assertEquals("GET", hah2.method()); - + Iterable i = hah2.url(); LinkValue lv = getFirst(i,null); assertNotNull(lv); assertTrue(lv instanceof SimpleLinkValue); SimpleLinkValue slv = (SimpleLinkValue) lv; assertEquals("http://example.org", slv.url()); - + } - + @Test public void roundtripIntentActionHandler2() { - + IntentActionHandler iah1 = intentAction() .id("urn:example:foo:1") .get(); - + IntentActionHandler iah2 = roundTrip2(iah1); - + assertEquals("urn:example:foo:1", iah2.id()); - + } - + @Test public void roundtripEmbedActionHandler2() { - - EmbedActionHandler eah1 = + + EmbedActionHandler eah1 = embedAction() .style( styles() .set("width", "100px") ) .get(); - + EmbedActionHandler eah2 = roundTrip2(eah1); - - Iterable styles = + + Iterable styles = eah2.styles(); - StylesValue style = + StylesValue style = getFirst(styles, null); assertNotNull(style); assertTrue(style.has("width")); assertEquals("100px", style.get("width")); } - + @Test public void roundtripHtmlForm2() { - HtmlForm htmlForm1 = + HtmlForm htmlForm1 = htmlForm() .parameter("foo", parameter().optional()) .get(); - + HtmlForm htmlForm2 = roundTrip2(htmlForm1); - - ParametersValue params = + + ParametersValue params = htmlForm2.parameters(); assertTrue(params.has("foo")); - + Parameter param = params.get("foo"); assertFalse(param.required()); } - + @Test public void roundtripTypedValue2() { TypedPayload typedPayload1 = typedPayload() .mediaType(MediaType.create("application", "json")) .get(); - - TypedPayload typedPayload2 = + + TypedPayload typedPayload2 = roundTrip2(typedPayload1); - + assertEquals( typedPayload1.mediaType(), typedPayload2.mediaType()); } - + @Test public void roundtripUrlTemplate2() { - UrlTemplate template1 = + UrlTemplate template1 = urlTemplate() .template("http://example.org{/foo}") .parameter("foo", "bar") .get(); - UrlTemplate template2 = + UrlTemplate template2 = roundTrip2(template1); assertEquals( - template1.template(), + template1.template(), template2.template()); - ParametersValue value = + ParametersValue value = template2.parameters(); - assertTrue(value.has("foo")); + assertTrue(value.has("foo")); } - - - - - + + + + + @Test public void roundtripHttpActionHandler() { - + HttpActionHandler hah1 = httpAction() .url("http://example.org") .method("GET") .get(); - - HttpActionHandler hah2 = + + HttpActionHandler hah2 = roundTrip(hah1); - + assertEquals("GET", hah2.method()); - + Iterable i = hah2.url(); LinkValue lv = getFirst(i,null); assertNotNull(lv); assertTrue(lv instanceof SimpleLinkValue); SimpleLinkValue slv = (SimpleLinkValue) lv; assertEquals("http://example.org", slv.url()); - + } - + @Test public void roundtripIntentActionHandler() { - + IntentActionHandler iah1 = intentAction() .id("urn:example:foo:1") .get(); - + IntentActionHandler iah2 = roundTrip(iah1); - + assertEquals("urn:example:foo:1", iah2.id()); - + } - + @Test public void roundtripEmbedActionHandler() { - - EmbedActionHandler eah1 = + + EmbedActionHandler eah1 = embedAction() .style( styles() .set("width", "100px") ) .get(); - + EmbedActionHandler eah2 = roundTrip(eah1); - - Iterable styles = + + Iterable styles = eah2.styles(); - StylesValue style = + StylesValue style = getFirst(styles, null); assertNotNull(style); assertTrue(style.has("width")); assertEquals("100px", style.get("width")); } - + @Test public void roundtripHtmlForm() { - HtmlForm htmlForm1 = + HtmlForm htmlForm1 = htmlForm() .parameter("foo", parameter().optional()) .get(); - + HtmlForm htmlForm2 = roundTrip(htmlForm1); - - ParametersValue params = + + ParametersValue params = htmlForm2.parameters(); assertTrue(params.has("foo")); - + Parameter param = params.get("foo"); assertFalse(param.required()); } - + @Test public void roundtripTypedValue() { TypedPayload typedPayload1 = typedPayload() .mediaType(MediaType.create("application", "json")) .get(); - - TypedPayload typedPayload2 = + + TypedPayload typedPayload2 = roundTrip(typedPayload1); - + assertEquals( typedPayload1.mediaType(), typedPayload2.mediaType()); } - + @Test public void roundtripUrlTemplate() { - UrlTemplate template1 = + UrlTemplate template1 = urlTemplate() .template("http://example.org{/foo}") .parameter("foo", "bar") .get(); - UrlTemplate template2 = + UrlTemplate template2 = roundTrip(template1); assertEquals( - template1.template(), + template1.template(), template2.template()); - ParametersValue value = + ParametersValue value = template2.parameters(); - assertTrue(value.has("foo")); + assertTrue(value.has("foo")); } - + private T roundTrip(T writable) { - ByteArrayOutputStream out = + ByteArrayOutputStream out = new ByteArrayOutputStream(); writable.writeTo(out,io); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); return io.readAs(in); } - + @SuppressWarnings("unchecked") private T roundTrip2(T writable){ try { - ByteArrayOutputStream out = + ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(out); oos.writeObject(writable); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); - ObjectInputStream ois = + ObjectInputStream ois = new ObjectInputStream(in); return (T)ois.readObject(); } catch (Throwable t) { - throw Throwables.propagate(t); + throwIfUnchecked(t); + throw new RuntimeException(t); } } } diff --git a/assembly/pom.xml b/assembly/pom.xml index 846818f..8ab658b 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -1,9 +1,10 @@ - + 4.0.0 com.ibm.common activitystreams - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT assembly Activity Streams 2.0 - Assembly @@ -12,25 +13,25 @@ com.ibm.common activitystreams-core - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT com.ibm.common activitystreams-actions - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT com.ibm.common activitystreams-geo - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT com.ibm.common activitystreams-legacy - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT - + @@ -45,5 +46,5 @@ - + \ No newline at end of file diff --git a/core/pom.xml b/core/pom.xml index 3866b60..0bfb6dc 100755 --- a/core/pom.xml +++ b/core/pom.xml @@ -1,12 +1,12 @@ - com.ibm.common activitystreams - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT 4.0.0 @@ -30,16 +30,16 @@ - com.google.code.gson - gson + com.google.code.gson + gson - com.google.guava - guava + com.google.guava + guava - joda-time - joda-time + joda-time + joda-time @@ -67,26 +67,39 @@ - + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + maven-compiler-plugin - 2.3.2 + 3.8.1 - 1.7 - 1.7 + 1.8 + 1.8 + true - + maven-jar-plugin 2.3.1 - + ${project.build.outputDirectory}/META-INF/MANIFEST.MF - + - + org.apache.felix maven-bundle-plugin @@ -112,7 +125,7 @@ - + org.apache.maven.plugins maven-assembly-plugin @@ -123,9 +136,9 @@ - + - + diff --git a/core/src/main/java/com/ibm/common/activitystreams/ASObject.java b/core/src/main/java/com/ibm/common/activitystreams/ASObject.java index 005bf07..85d3d6d 100755 --- a/core/src/main/java/com/ibm/common/activitystreams/ASObject.java +++ b/core/src/main/java/com/ibm/common/activitystreams/ASObject.java @@ -23,7 +23,7 @@ import static com.google.common.base.Enums.getIfPresent; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Throwables.propagate; +import static com.google.common.base.Throwables.throwIfUnchecked; import static com.google.common.collect.ImmutableList.of; import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.getFirst; @@ -79,11 +79,11 @@ /** * The Base for all Activity Streams objects. - * + * *

Creating an object:

*
  *   import static com.ibm.common.activitystreams.Makers.object;
- * 
+ *
  *   ASObject obj = object()
  *     .id("urn:example:object:1")
  *     .displayName("My Note")
@@ -102,38 +102,38 @@ public class ASObject
   /**
    * Builder for concrete ASObject instances
    */
-  public static class Builder 
+  public static class Builder
     extends AbstractBuilder {
     /**
-     * Returns the built ASObject instance    
-     * @return ASObject 
-     * @see com.google.common.base.Supplier#get() 
+     * Returns the built ASObject instance
+     * @return ASObject
+     * @see com.google.common.base.Supplier#get()
      **/
     public ASObject get() {
       return new ASObject(this);
     }
   }
-  
+
   /**
    * Verifies that the rating value is within the proper range
    * @param d double
-   * @return double 
+   * @return double
    **/
   private static double checkRating(double d) {
     checkArgument(floor(d) >= 1 && ceil(d) <= 5);
     return d;
   }
-  
+
   /**
    * Verifies that the value is non-negative
    * @param i int
-   * @return int 
+   * @return int
    **/
   private static int checkNotNegative(int i) {
     checkArgument(i >= 0);
     return i;
   }
-  
+
   /**
    * Method checkNotNegative.
    * @param l long
@@ -143,7 +143,7 @@ private static long checkNotNegative(long l) {
     checkArgument(l >= 0);
     return l;
   }
-    
+
   /**
    * Abstract base builder for ASObject instances.
    */
@@ -151,83 +151,83 @@ public static abstract class AbstractBuilder
     >
       extends AbstractWritable.AbstractWritableBuilder
       implements Supplier, Writable {
-  
-    private final Map map = 
+
+    private final Map map =
       newLinkedHashMap();
-    private final ActionsValue.Builder actions = 
+    private final ActionsValue.Builder actions =
       Makers.actions();
-      
+
     /**
      * Method _dt.
      * @param key String
      * @param dt DateTime
-     * @return B 
+     * @return B
      **/
     protected B _dt(String key, DateTime dt) {
       return set(key, dt);
     }
-    
+
     /**
      * Method _dt.
      * @param key String
      * @param dt String
-     * @return B 
+     * @return B
      **/
     protected B _dt(String key, String dt) {
       return _dt(key, DateTime.parse(dt));
     }
-    
+
     /**
      * Method _dtNow.
      * @param key String
-     * @return B 
+     * @return B
      **/
     protected B _dtNow(String key) {
       return _dt(key, DateTime.now(UTC));
     }
-    
+
     /**
      * Method _dtFromNow.
      * @param key String
      * @param duration Duration
-     * @return B 
+     * @return B
      **/
     protected B _dtFromNow(String key, ReadableDuration duration) {
       return _dt(key, DateTime.now(UTC).plus(duration));
     }
-    
+
     /**
      * Method _dtFromNow.
      * @param key String
      * @param period ReadablePeriod
-     * @return B 
+     * @return B
      **/
     protected B _dtFromNow(String key, ReadablePeriod period) {
       return _dt(key, DateTime.now(UTC).plus(period));
     }
-    
+
     /**
      * Method _dtFromNow.
      * @param key String
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     protected B _dtFromNow(String key, long v, TimeUnit unit) {
       return _dtFromNow(key, toDuration(v,unit));
     }
-    
+
     /**
      * Method _dtFrom.
      * @param key String
      * @param dt DateTime
      * @param duration Duration
-     * @return B 
+     * @return B
      **/
     protected B _dtFrom(String key, DateTime dt, ReadableDuration duration) {
       return _dt(key, dt.plus(duration));
     }
-    
+
     /**
      * Method _dtFrom.
      * @param key String
@@ -238,36 +238,36 @@ protected B _dtFrom(String key, DateTime dt, ReadableDuration duration) {
     protected B _dtFrom(String key, DateTime dt, ReadablePeriod period) {
       return _dt(key, dt.plus(period));
     }
-    
+
     /**
      * Method _dtFrom.
      * @param key String
      * @param dt DateTime
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     protected B _dtFrom(String key, DateTime dt, long v, TimeUnit unit) {
       return _dtFrom(key, dt, toDuration(v,unit));
     }
-    
+
     /**
      * Set the published timestamp
      * @param dt DateTime
-     * @return B 
+     * @return B
      **/
     public B published(DateTime dt) {
       return _dt("published", dt);
     }
-    
+
     /**
      * Set the published timestamp equal to the current time
-     * @return B 
+     * @return B
      **/
     public B publishedNow() {
       return _dtNow("published");
     }
-    
+
     /**
      * Set the published timestamp as a given duration from the current time.
      * For instance:
@@ -278,12 +278,12 @@ public B publishedNow() {
      *   .get();
      * 
      * @param duration Duration
-     * @return B 
+     * @return B
      **/
     public B publishedFromNow(ReadableDuration duration) {
       return _dtFromNow("published", duration);
     }
-    
+
     /**
      * Set the published timestamp as a given period of time from the current time
      * 
@@ -293,39 +293,39 @@ public B publishedFromNow(ReadableDuration duration) {
      *   .get();
      * 
      * @param period ReadablePeriod
-     * @return B 
+     * @return B
      **/
     public B publishedFromNow(ReadablePeriod period) {
       return _dtFromNow("published", period);
     }
-    
+
     /**
      * Set the published timestamp as a given period of time from the current time
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     public B publishedFromNow(long v, TimeUnit unit) {
       return _dtFromNow("published", v, unit);
     }
-    
+
     /**
      * Set the updated timestamp
      * @param dt DateTime
-     * @return B 
+     * @return B
      **/
     public B updated(DateTime dt) {
       return _dt("updated", dt);
     }
-    
+
     /**
      * Set the updated timestamp equal to the current time
-     * @return B 
+     * @return B
      **/
     public B updatedNow() {
       return _dtNow("updated");
     }
-    
+
     /**
      * Set the updated timestamp as a given duration from the current time.
      * For instance:
@@ -341,7 +341,7 @@ public B updatedNow() {
     public B updatedFromNow(ReadableDuration duration) {
       return _dtFromNow("updated", duration);
     }
-    
+
     /**
      * Set the updated timestamp as a given period from the current time.
      * For instance:
@@ -357,26 +357,26 @@ public B updatedFromNow(ReadableDuration duration) {
     public B updatedFromNow(ReadablePeriod period) {
       return _dtFromNow("updated", period);
     }
-    
+
     /**
      * Set the updated timestamp as a given period from the current time
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     public B updatedFromNow(long v, TimeUnit unit) {
       return _dtFromNow("updated", v, unit);
     }
-    
+
     /**
      * Set the start time
      * @param dt DateTime
-     * @return B 
+     * @return B
      **/
     public B startTime(DateTime dt) {
       return _dt("startTime", dt);
     }
-    
+
     /**
      * Set the startTime timestamp as a given duration from the current time.
      * For instance:
@@ -387,12 +387,12 @@ public B startTime(DateTime dt) {
      *   .get();
      * 
      * @param duration Duration
-     * @return B 
+     * @return B
      **/
     public B startTimeFromNow(ReadableDuration duration) {
       return _dtFromNow("startTime", duration);
     }
-    
+
     /**
      * Set the startTime timestamp as a given period from the current time.
      * For instance:
@@ -403,30 +403,30 @@ public B startTimeFromNow(ReadableDuration duration) {
      *   .get();
      * 
      * @param period ReadablePeriod
-     * @return B 
+     * @return B
      **/
     public B startTimeFromNow(ReadablePeriod period) {
       return _dtFromNow("startTime", period);
     }
-    
+
     /**
      * Set the startTime timestamp as a given period from the current time.
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     public B startTimeFromNow(long v, TimeUnit unit) {
       return _dtFromNow("startTime", v, unit);
     }
-    
+
     /**
      * Set the start time to the current time
-     * @return B 
+     * @return B
      **/
     public B startTimeNow() {
       return _dtNow("startTime");
     }
-    
+
     /**
      * Set the end time
      * @param dt DateTime
@@ -435,7 +435,7 @@ public B startTimeNow() {
     public B endTime(DateTime dt) {
       return _dt("endTime", dt);
     }
-    
+
     /**
      * Set the endTime timestamp as a given duration from the current time.
      * For instance:
@@ -446,12 +446,12 @@ public B endTime(DateTime dt) {
      *   .get();
      * 
      * @param duration Duration
-     * @return B 
+     * @return B
      **/
     public B endTimeFromNow(ReadableDuration duration) {
       return _dtFromNow("endTime", duration);
     }
-    
+
     /**
      * Set the endTime timestamp as a given period from the current time.
      * For instance:
@@ -467,56 +467,56 @@ public B endTimeFromNow(ReadableDuration duration) {
     public B endTimeFromNow(ReadablePeriod period) {
       return _dtFromNow("endTime", period);
     }
-    
+
     /**
      * Set the endTime timestamp as a given period from the current time
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     public B endTimeFromNow(long v, TimeUnit unit) {
       return _dtFromNow("endTime", v, unit);
     }
-    
+
     /**
-     * Set the end time 
+     * Set the end time
      * @return B
      **/
     public B endTimeNow() {
       return _dtNow("endTimeNow");
     }
-    
+
     /**
      * Set the rating as a value in the range 0.00-1.00;
      * @param d double
-     * @return B 
-     * @throws IllegalArgumentException if the value is not 
-     *         within the proper range 
+     * @return B
+     * @throws IllegalArgumentException if the value is not
+     *         within the proper range
      **/
     public B rating(double d) {
       return set("rating", checkRating(d));
     }
-    
+
     /**
      * Set the duration
      * @param s int
-     * @return B 
-     * @throws IllegalArgumentException if the value 
-     *         is less than zero 
+     * @return B
+     * @throws IllegalArgumentException if the value
+     *         is less than zero
      **/
     public B duration(long s) {
       return duration(standardSeconds(checkNotNegative(s)));
     }
-    
+
     /**
      * Set the duration as a Joda-Time Duration
      * @param d Duration
-     * @return B 
+     * @return B
      **/
     public B duration(ReadableDuration d) {
       return set("duration", d);
     }
-    
+
     /**
      * Set the duration as a Joda-Time Period
      * @param period ReadablePeriod
@@ -525,17 +525,17 @@ public B duration(ReadableDuration d) {
     public B duration(ReadablePeriod period) {
       return duration(period.toPeriod().toStandardDuration());
     }
-    
+
     /**
      * Set the duration
      * @param v long
      * @param unit TimeUnit
-     * @return B 
+     * @return B
      **/
     public B duration(long v, TimeUnit unit) {
       return duration(toDuration(v,unit));
     }
-    
+
     /**
      * Set the duration as a given period of time from the given reference
      * @param p ReadablePeriod
@@ -545,7 +545,7 @@ public B duration(long v, TimeUnit unit) {
     public B durationFrom(ReadablePeriod p, DateTime dt) {
       return duration(p.toPeriod().toDurationFrom(dt));
     }
-    
+
     /**
      * Set the duration as a given period of time from the current time
      * @param p ReadablePeriod
@@ -554,67 +554,67 @@ public B durationFrom(ReadablePeriod p, DateTime dt) {
     public B durationFromNow(ReadablePeriod p) {
       return duration(p.toPeriod().toDurationFrom(DateTime.now(UTC)));
     }
-    
+
     /**
      * Set the height of the object in terms of number of device-independent
      * pixels.
      * @param h int
-     * @return B 
+     * @return B
      **/
     public B height(int h) {
       return set("height", checkNotNegative(h));
     }
-    
+
     /**
      * Set the width of the object in terms of number of device-independent
      * pixels.
      * @param h int
-     * @return B 
+     * @return B
      **/
     public B width(int h) {
       return set("width", checkNotNegative(h));
     }
-    
+
     /**
      * Set the MIME Media Type of the object
      * @param mt String
-     * @return B 
+     * @return B
      **/
     public B mediaType(String mt) {
       return mediaType(parse(mt));
     }
-    
+
     /**
      * Set the MIME Media Type of the object
      * @param mt com.google.common.net.MediaType
-     * @return B 
+     * @return B
      **/
     public B mediaType(MediaType mt) {
       return set("mediaType", mt);
     }
-    
+
     /**
      * Set the link relation
      * @param rel String
-     * @return B 
+     * @return B
      **/
     public B rel(String rel) {
       return set("rel", rel);
     }
-    
+
     /**
      * An objects alias is an alternative to it's "id".
      * @param iri String
-     * @return B 
+     * @return B
      **/
     public B alias(String iri) {
       return set("alias", iri);
     }
-    
+
     /**
      * Add an attachment
      * @param url String
-     * @return B 
+     * @return B
      **/
     public B attachments(String url, String... urls) {
       if (url != null)
@@ -624,48 +624,48 @@ public B attachments(String url, String... urls) {
           link("attachments", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Add an attachment.
      * @param link LinkValue
-     * @return B 
+     * @return B
      **/
     public B attachments(LinkValue link, LinkValue... links) {
       if (link != null)
         link("attachments", link);
-      if (links != null) 
+      if (links != null)
         for (LinkValue l : links)
           link("attachments", l);
       return (B)this;
     }
-    
+
     /**
      * Add an attachment
      * @param link Supplier
-     * @return B 
+     * @return B
      **/
     public B attachments(Supplier link) {
       return link("attachments", link.get());
     }
-    
+
     /**
      * Set the author
      * @param url String
-     * @return B 
+     * @return B
      **/
     public B author(String url, String... urls) {
       if (url != null)
         link("author", linkValue(url));
-      if (urls != null) 
+      if (urls != null)
         for (String u : urls)
           link("author", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the author
      * @param link LinkValue
-     * @return B 
+     * @return B
      **/
     public B author(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -675,11 +675,11 @@ public B author(LinkValue link, LinkValue... links) {
           link("author", l);
       return (B)this;
     }
-  
+
     /**
      * Set the author
      * @param link Supplier
-     * @return B 
+     * @return B
      **/
     public B author(Supplier link) {
       return link("author", link.get());
@@ -688,7 +688,7 @@ public B author(Supplier link) {
     /**
      * Add a duplicate
      * @param url String
-     * @return B 
+     * @return B
      **/
     public B duplicates(String url, String... urls) {
       if (url != null)
@@ -698,11 +698,11 @@ public B duplicates(String url, String... urls) {
           link("duplicates", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Add a duplicate
      * @param link LinkValue
-     * @return B 
+     * @return B
      **/
     public B duplicates(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -712,11 +712,11 @@ public B duplicates(LinkValue link, LinkValue... links) {
           link("duplicates", l);
       return (B)this;
     }
-  
+
     /**
      * Add a duplicate
      * @param link Supplier
-     * @return B 
+     * @return B
      **/
     public B duplicates(Supplier link) {
       return link("duplicates", link.get());
@@ -735,7 +735,7 @@ public B icon(String url, String... urls) {
           link("icon", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the icon
      * @param link LinkValue
@@ -748,7 +748,7 @@ public B icon(LinkValue link, LinkValue... links) {
           link("icon", l);
       return (B)this;
     }
-  
+
     /**
      * Set the icon
      * @param link Supplier
@@ -759,7 +759,7 @@ public B icon(Supplier link) {
 
     /**
      * Set the image
-     * @param url String   
+     * @param url String
      * @return B */
     public B image(String url, String... urls) {
       if (url != null)
@@ -769,10 +769,10 @@ public B image(String url, String... urls) {
           link("image", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the image.
-     * @param link LinkValue 
+     * @param link LinkValue
      * @return B */
     public B image(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -782,15 +782,15 @@ public B image(LinkValue link, LinkValue... links) {
           link("image", l);
       return (B)this;
     }
-  
+
     /**
      * Set the image
-     * @param link Supplier 
+     * @param link Supplier
      * @return B */
     public B image(Supplier link) {
       return link("image", link.get());
     }
-    
+
     /**
      * Set the location
      * @param url String
@@ -803,10 +803,10 @@ public B location(String url, String... urls) {
           link("location", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the location
-     * @param link LinkValue  
+     * @param link LinkValue
      * @return B */
     public B location(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -816,18 +816,18 @@ public B location(LinkValue link, LinkValue... links) {
           link("location", u);
       return (B)this;
     }
-  
+
     /**
      * Set the location
-     * @param link Supplier  
+     * @param link Supplier
      * @return B */
     public B location(Supplier link) {
       return link("location", link.get());
     }
-    
+
     /**
      * Set the generator
-     * @param url String  
+     * @param url String
      * @return B */
     public B generator(String url, String... urls) {
       if (url != null)
@@ -837,10 +837,10 @@ public B generator(String url, String... urls) {
           link("generator", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the generator
-     * @param link LinkValue 
+     * @param link LinkValue
      * @return B */
     public B generator(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -850,18 +850,18 @@ public B generator(LinkValue link, LinkValue... links) {
           link("generator", u);
       return (B)this;
     }
-  
+
     /**
      * Set the generator.
-     * @param link Supplier  
+     * @param link Supplier
      * @return B */
     public B generator(Supplier link) {
       return link("generator", link.get());
     }
-    
+
     /**
      * Set the provider
-     * @param url String   
+     * @param url String
      * @return B */
     public B provider(String url, String... urls) {
       if (url != null)
@@ -871,10 +871,10 @@ public B provider(String url, String... urls) {
           link("provider", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the provider
-     * @param link LinkValue  
+     * @param link LinkValue
      * @return B */
     public B provider(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -884,18 +884,18 @@ public B provider(LinkValue link, LinkValue... links) {
           link("provider",l);
       return (B)this;
     }
-  
+
     /**
      * Set the provider
-     * @param link Supplier 
+     * @param link Supplier
      * @return B */
     public B provider(Supplier link) {
       return link("provider", link.get());
     }
-    
+
     /**
      * Add a tag
-     * @param url String 
+     * @param url String
      * @return B */
     public B tags(String url, String... urls) {
       if (url != null)
@@ -905,10 +905,10 @@ public B tags(String url, String... urls) {
           link("tags", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Add a tag
-     * @param link LinkValue  
+     * @param link LinkValue
      * @return B */
     public B tags(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -918,10 +918,10 @@ public B tags(LinkValue link, LinkValue... links) {
           link("tags", l);
       return (B)this;
     }
-  
+
     /**
      * Add a tag
-     * @param link Supplier  
+     * @param link Supplier
      * @return B */
     public B tags(Supplier link) {
       return link("tags", link.get());
@@ -929,8 +929,8 @@ public B tags(Supplier link) {
 
     /**
      * Add in-reply-to
-     * @param url String  
-     * @return B 
+     * @param url String
+     * @return B
      **/
     public B inReplyTo(String url, String... urls) {
       if (url != null)
@@ -940,10 +940,10 @@ public B inReplyTo(String url, String... urls) {
           link("inReplyTo", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Add in-reply-to
-     * @param link LinkValue   
+     * @param link LinkValue
      * @return B */
     public B inReplyTo(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -953,24 +953,24 @@ public B inReplyTo(LinkValue link, LinkValue... links) {
           link("inReplyTo", l);
       return (B)this;
     }
-  
+
     /**
      * Add in-reply-to
-     * @param link Supplier 
-     * @return B 
+     * @param link Supplier
+     * @return B
      **/
     public B inReplyTo(Supplier link) {
       return link("inReplyTo", link.get());
     }
-    
+
     /**
      * Add a replies collection
-     * @param collection Collection 
+     * @param collection Collection
      * @return B */
     public B replies(Collection collection) {
       return set("replies", collection);
     }
-    
+
     /**
      * Add a replies collection
      * @param collection Supplier
@@ -978,93 +978,93 @@ public B replies(Collection collection) {
     public B replies(Supplier collection) {
       return set("replies", collection.get());
     }
-     
+
     /**
      * Set the ID
      * @param iri String
-     * @return B 
+     * @return B
      **/
     public B id(String iri) {
       return set("id", iri);
     }
-  
+
     /**
      * Set the objectType
      * @param iri String
-     * @return B 
+     * @return B
      **/
     public B objectType(String iri) {
       return set("objectType", type(iri));
     }
-    
+
     /**
      * Set the objectType
      * @param tv TypeValue
-     * @return B 
+     * @return B
      **/
     public B objectType(TypeValue tv) {
       return set("objectType", tv);
     }
-    
+
     /**
      * Set the objectType
      * @param tv Supplier
-     * @return B 
+     * @return B
      **/
     public B objectType(Supplier tv) {
       return objectType(tv.get());
     }
-  
+
     /**
      * Set the language
-     * @param lang String 
-     * @return B 
+     * @param lang String
+     * @return B
      **/
     public B language(String lang) {
       return set("language", lang);
     }
-  
+
     /**
      * Set the displayName
-     * @param name String 
-     * @return B 
+     * @param name String
+     * @return B
      **/
     public B displayName(String name) {
       return _nlv("displayName", name);
     }
-  
+
     /**
      * Set the displayName
-     * @param nlv NLV  
-     * @return B 
+     * @param nlv NLV
+     * @return B
      **/
     public B displayName(NLV nlv) {
       return _nlv("displayName", nlv);
     }
-  
+
     /**
      * Set the displayName
-     * @param nlv Supplier 
-     * @return B 
+     * @param nlv Supplier
+     * @return B
      **/
     public B displayName(Supplier nlv) {
       return _nlv("displayName", nlv);
     }
-  
+
     /**
      * Set the displayName
      * @param lang String
-     * @param name String   
-     * @return B 
+     * @param name String
+     * @return B
      **/
     public B displayName(String lang, String name) {
       return _nlv("displayName",lang, name);
     }
-  
+
     /**
      * Set the displayName
-     * @param map Map   
-     * @return B 
+     * @param map Map
+     * @return B
      **/
     public B displayName(Map map) {
       return _nlv("displayName", map);
@@ -1072,45 +1072,45 @@ public B displayName(Map map) {
 
     /**
      * Set the content
-     * @param name String    
-     * @return B 
+     * @param name String
+     * @return B
      **/
     public B content(String name) {
       return _nlv("content", name);
     }
-  
+
     /**
      * Set the content
-     * @param nlv NLV 
-     * @return B 
+     * @param nlv NLV
+     * @return B
      **/
     public B content(NLV nlv) {
       return _nlv("content", nlv);
     }
-  
+
     /**
      * Set the content
      * @param nlv Supplier
-     * @return B 
+     * @return B
      **/
     public B content(Supplier nlv) {
       return _nlv("content", nlv);
     }
-  
+
     /**
      * Set the content
      * @param lang String
      * @param name String
-     * @return B 
+     * @return B
      **/
     public B content(String lang, String name) {
       return _nlv("content",lang, name);
     }
-  
+
     /**
      * Set the content
      * @param map Map
-     * @return B 
+     * @return B
      **/
     public B content(Map map) {
       return _nlv("content", map);
@@ -1119,44 +1119,44 @@ public B content(Map map) {
     /**
      * Set the summary
      * @param name String
-     * @return B 
+     * @return B
      **/
     public B summary(String name) {
       return _nlv("summary", name);
     }
-  
+
     /**
      * Set the summary
      * @param nlv NLV
-     * @return B 
+     * @return B
      **/
     public B summary(NLV nlv) {
       return _nlv("summary", nlv);
     }
-  
+
     /**
      * Set the summary
      * @param nlv Supplier
-     * @return B 
+     * @return B
      **/
     public B summary(Supplier nlv) {
       return _nlv("summary", nlv);
     }
-  
+
     /**
      * Set the summary
      * @param lang String
      * @param name String
-     * @return B 
+     * @return B
      **/
     public B summary(String lang, String name) {
       return _nlv("summary",lang, name);
     }
-    
+
     /**
      * Set the summary
      * @param map Map
-     * @return B 
+     * @return B
      **/
     public B summary(Map map) {
       return _nlv("summary", map);
@@ -1165,49 +1165,49 @@ public B summary(Map map) {
     /**
      * Set the title
      * @param name String
-     * @return B 
+     * @return B
      **/
     public B title(String name) {
       return _nlv("title", name);
     }
-  
+
     /**
      * Set the title
      * @param nlv NLV
-     * @return B 
+     * @return B
      **/
     public B title(NLV nlv) {
       return _nlv("title", nlv);
     }
-  
+
     /**
      * Set the title
      * @param nlv Supplier
-     * @return B 
+     * @return B
      **/
     public B title(Supplier nlv) {
       return _nlv("title", nlv);
     }
-  
+
     /**
      * Set the title
      * @param lang String
      * @param value String
-     * @return B 
+     * @return B
      **/
     public B title(String lang, String value) {
       return _nlv("title",lang, value);
     }
-  
+
     /**
      * Set the title
      * @param map Map
-     * @return B 
+     * @return B
      **/
     public B title(Map map) {
       return _nlv("title", map);
     }
-    
+
     /**
      * Add an action handler
      * @param verb String
@@ -1222,7 +1222,7 @@ public B action(String verb, String iri, String... iris) {
           actions.set(verb, i);
       return (B)this;
     }
-    
+
     /**
      * Add an action handler
      * @param verb String
@@ -1237,7 +1237,7 @@ public B action(String verb, LinkValue lv, LinkValue... links) {
           actions.set(verb, l);
       return (B)this;
     }
-    
+
     /**
      * Add an action handler
      * @param verb String
@@ -1247,7 +1247,7 @@ public B action(String verb, LinkValue lv, LinkValue... links) {
     public B action(String verb, Supplier lv) {
       return action(verb, lv.get());
     }
-        
+
     /**
      * Method _nlv.
      * @param key String
@@ -1257,45 +1257,45 @@ public B action(String verb, Supplier lv) {
     protected B _nlv(String key, String value) {
       return set(key, nlv(value));
     }
-  
+
     /**
      * Method _nlv.
      * @param key String
      * @param nlv NLV
-     * @return B 
+     * @return B
      **/
     protected B _nlv(String key, NLV nlv) {
       return set(key, nlv);
     }
-  
+
     /**
      * Method _nlv.
      * @param key String
      * @param nlv Supplier
-     * @return B 
+     * @return B
      **/
     protected B _nlv(String key, Supplier nlv) {
       return set(key, nlv.get());
     }
-  
+
     /**
      * Method _nlv.
      * @param key String
      * @param map Map
-     * @return B 
+     * @return B
      **/
     protected B _nlv(String key, Map map) {
       for (Map.Entry entry : map.entrySet())
         _nlv(key,entry.getKey(),entry.getValue());
       return (B)this;
     }
-    
+
     /**
      * Method _nlv.
      * @param key String
      * @param lang String
      * @param value String
-     * @return B 
+     * @return B
      **/
     protected B _nlv(String key, String lang, String value) {
       if (map.containsKey(key)) {
@@ -1307,7 +1307,7 @@ protected B _nlv(String key, String lang, String value) {
             String l = (String) map.get("language");
             if (l == null)
               l = DEFAULT_LOCALE;
-            NLV.MapNLV.Builder b = 
+            NLV.MapNLV.Builder b =
               Makers.nlv();
             if (lang.equals(l))
               b.set(lang, value);
@@ -1316,10 +1316,10 @@ protected B _nlv(String key, String lang, String value) {
                  .set(lang, value);
             return set(key, b);
           case OBJECT:
-            return set(key, 
+            return set(key,
               Makers.nlv()
                 .from((NLV.MapNLV)obj, lang)
-                .set(lang, value)); 
+                .set(lang, value));
           default:
             throw new IllegalArgumentException();
           }
@@ -1328,14 +1328,14 @@ protected B _nlv(String key, String lang, String value) {
           return (B)this;
         }
       }
-      set(key, Makers.nlv().set(lang,value));      
+      set(key, Makers.nlv().set(lang,value));
       return (B)this;
     }
-    
+
     /**
      * Set the "url"
      * @param url String
-     * @return B 
+     * @return B
      **/
     public B url(String url, String... urls) {
       if (url != null)
@@ -1345,20 +1345,20 @@ public B url(String url, String... urls) {
           link("url", linkValue(u));
       return (B)this;
     }
-    
+
     /**
      * Set the "url"
      * @param link Supplier
-     * @return B 
+     * @return B
      **/
     public B url(Supplier link) {
       return url(link.get());
     }
-  
+
     /**
      * Set the "url"
      * @param link LinkValue
-     * @return B 
+     * @return B
      **/
     public B url(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -1368,22 +1368,22 @@ public B url(LinkValue link, LinkValue... links) {
           link("url", l);
       return (B)this;
     }
-    
+
     /**
      * Add a link
      * @param name String
      * @param url String
-     * @return B 
+     * @return B
      **/
     public B link(String name, String url) {
       return link(name, linkValue(url));
     }
-    
+
     /**
      * Add a link
      * @param name String
-     * @param link LinkValue   
-     * @return B 
+     * @param link LinkValue
+     * @return B
      **/
     public B link(String name, LinkValue link) {
       if (link == null)
@@ -1391,7 +1391,7 @@ public B link(String name, LinkValue link) {
       Object obj = map.get(name);
       if (link.valueType() != ValueType.ARRAY) {
         if (obj instanceof LinkValue)
-          link = 
+          link =
             ((LinkValue) obj).valueType() == ValueType.ARRAY ?
               linkValues()
                 .add((LinkValue.ArrayLinkValue)obj)
@@ -1404,12 +1404,12 @@ public B link(String name, LinkValue link) {
       } else set(name, link);
       return (B)this;
     }
-  
+
     /**
      * Add a link
      * @param name String
      * @param link Supplier
-     * @return B 
+     * @return B
      **/
     public B link(String name, Supplier link) {
       return link(name,link.get());
@@ -1419,17 +1419,17 @@ public B link(String name, Supplier link) {
      * Add a link
      * @param name String
      * @param links Object[]
-     * @return B 
+     * @return B
      **/
     protected B link(String name, Object... links) {
       if (links == null) return (B)this;
-      ArrayLinkValue.Builder b = 
+      ArrayLinkValue.Builder b =
         ArrayLinkValue.make();
       for (Object obj : links)
         _add(b, obj);
       return link(name,b.get());
     }
-    
+
     /**
      * Method _add.
      * @param builder ArrayLinkValue.Builder
@@ -1446,15 +1446,15 @@ else if (obj instanceof Supplier)
         _add(builder,((Supplier)obj).get());
       else throw new IllegalArgumentException();
     }
-  
+
     /**
      * Set a property
      * @param key String
      * @param value V
-     * @return B 
+     * @return B
      **/
     public B set(String key, Object value) {
-      if (value == null) 
+      if (value == null)
         return (B)this;
       if (value instanceof Supplier)
         map.put(key, ((Supplier)value).get());
@@ -1462,42 +1462,44 @@ public B set(String key, Object value) {
         map.put(key, value);
       return (B)this;
     }
-    
+
     /**
      * Set a property
      * @param key String
      * @param value Supplier
-     * @return B 
+     * @return B
      **/
     public B set(String key, Supplier value) {
       try {
         return value == null ?
           (B)this : set(key,value.get());
       } catch (Throwable t) {
-        throw propagate(t);
+        throwIfUnchecked(t);
+        throw new RuntimeException(t);
       }
     }
-    
+
     /**
      * Set a property from a given callable
      * @param key String
      * @param value Callable
-     * @return B 
+     * @return B
      **/
     public B set(String key, Callable value) {
       try {
         return value == null ?
-          (B)this : 
+          (B)this :
           set(key,value.call());
       } catch (Throwable t) {
-        throw propagate(t);
+        throwIfUnchecked(t);
+        throw new RuntimeException(t);
       }
     }
-    
+
     /**
      * Set the scope
      * @param url String
-     * @return B 
+     * @return B
      **/
     public B scope(String url, String... urls) {
       if (url != null)
@@ -1507,11 +1509,11 @@ public B scope(String url, String... urls) {
           link("scope", linkValue(u));
       return (B)this;
     }
-  
+
     /**
      * Set the scope
      * @param link LinkValue
-     * @return B 
+     * @return B
      **/
     public B scope(LinkValue link, LinkValue... links) {
       if (link != null)
@@ -1521,20 +1523,20 @@ public B scope(LinkValue link, LinkValue... links) {
           link("scope", l);
       return (B)this;
     }
-  
+
     /**
      * Set the scope
      * @param link Supplier
-    
+
      * @return B */
     public B scope(Supplier link) {
       return link("scope", link.get());
-    }   
+    }
   }
-  
+
   protected final ImmutableMap map;
   private transient int hash = 1;
-  
+
   /**
    * Constructor for ASObject.
    * @param builder ASObject.AbstractBuilder
@@ -1545,26 +1547,26 @@ public ASObject(ASObject.AbstractBuilder builder) {
       builder.map.put("actions", builder.actions.get());
     this.map = ImmutableMap.copyOf(builder.map);
   }
-  
+
   /**
-   * Returns true if the given property exists, does not 
+   * Returns true if the given property exists, does not
    * determine if the value is non-null
    * @param key String
-   * @return boolean 
+   * @return boolean
    **/
   public boolean has(String key) {
     return map.containsKey(key);
   }
-  
+
   /**
    * Return the value of the property if it exists, null otherwise
    * @param key String
-   * @return V 
+   * @return V
    **/
   public V get(String key) {
     return this._get(key).orNull();
   }
-  
+
   /**
    * Return the value of the property if it exists, casting to a DateTime
    * object.
@@ -1574,10 +1576,10 @@ public V get(String key) {
   public DateTime getDateTime(String key) {
     return this.get(key,toDateTime,Optional.absent()).orNull();
   }
-  
+
   /**
    * Return the value of the property if it exists, converting the value
-   * to the given Enum class. 
+   * to the given Enum class.
    * @param key String
    * @param _enumClass Class
    * @return E
@@ -1585,7 +1587,7 @@ public DateTime getDateTime(String key) {
   public >E getEnum(String key, Class _enumClass) {
     return getEnum(key, _enumClass, (E)null);
   }
-  
+
   /**
    * Method getEnum.
    * @param key String
@@ -1599,7 +1601,7 @@ public >E getEnum(String key, Class _enumClass, E or) {
     return or != null ?
       op.or(or) : op.orNull();
   }
-  
+
   /**
    * Return the value of the property if it exists, casting to a String
    * object.
@@ -1609,7 +1611,7 @@ public >E getEnum(String key, Class _enumClass, E or) {
   public String getString(String key) {
     return getString(key, null);
   }
-  
+
   /**
    * Method getDuration.
    * @param key String
@@ -1618,7 +1620,7 @@ public String getString(String key) {
   public Duration getDuration(String key) {
     return this.get(key, toDuration, Optional.absent()).orNull();
   }
-  
+
   /**
    * Method getPeriod.
    * @param key String
@@ -1627,7 +1629,7 @@ public Duration getDuration(String key) {
   public Period getPeriod(String key) {
     return this.get(key, toPeriod, Optional.absent()).orNull();
   }
-  
+
   /**
    * Method getInterval.
    * @param key String
@@ -1636,10 +1638,10 @@ public Period getPeriod(String key) {
   public Interval getInterval(String key) {
     return this.get(key, toInterval, Optional.absent()).orNull();
   }
-  
+
   /**
-   * Return the value of the property as a string if it exists or defaultValue if 
-   * it does not. 
+   * Return the value of the property as a string if it exists or defaultValue if
+   * it does not.
    * @param key String
    * @param defaultValue String
    * @return String
@@ -1649,7 +1651,7 @@ public String getString(String key, String defaultValue) {
       this._get(key).or(defaultValue) :
       this._get(key).orNull();
   }
-  
+
   /**
    * Return the value of the property as an int if it exists or 0 if it does not.
    * @param key String
@@ -1658,7 +1660,7 @@ public String getString(String key, String defaultValue) {
   public int getInt(String key) {
     return getInt(key, 0);
   }
-  
+
   /**
    * Return the value of the property as an int if it exists or defaultValue if
    * it does not
@@ -1669,7 +1671,7 @@ public int getInt(String key) {
   public int getInt(String key, int defaultValue) {
     return get(key, toInt, Optional.absent()).or(defaultValue);
   }
-  
+
   /**
    * Return the value of the property as a long if it exists or 0 if it does not
    * @param key String
@@ -1678,7 +1680,7 @@ public int getInt(String key, int defaultValue) {
   public long getLong(String key) {
     return getLong(key,0L);
   }
-  
+
   /**
    * Return the value of the property as a long if it exists or defaultValue if
    * it does not
@@ -1689,7 +1691,7 @@ public long getLong(String key) {
   public long getLong(String key, long defaultValue) {
     return get(key, toLong, Optional.absent()).or(defaultValue);
   }
-  
+
   /**
    * Return the value of the property as a double if it exists, or 0.0 if it
    * does not
@@ -1699,7 +1701,7 @@ public long getLong(String key, long defaultValue) {
   public double getDouble(String key) {
     return getDouble(key, 0.0);
   }
-  
+
   /**
    * Return the value of the property as a double if it exists or defaultValue
    * if it does not
@@ -1710,9 +1712,9 @@ public double getDouble(String key) {
   public double getDouble(String key, double defaultValue) {
     return get(key, toDouble, Optional.absent()).or(defaultValue);
   }
-  
+
   /**
-   * Return the value of the property as a float if it exists or 0f if it 
+   * Return the value of the property as a float if it exists or 0f if it
    * does not
    * @param key String
    * @return float
@@ -1720,7 +1722,7 @@ public double getDouble(String key, double defaultValue) {
   public float getFloat(String key) {
     return getFloat(key, 0f);
   }
-  
+
   /**
    * Return the value of the property as a float if it exists or defaultValue
    * if it does not
@@ -1731,9 +1733,9 @@ public float getFloat(String key) {
   public float getFloat(String key, float defaultValue) {
     return get(key, toFloat, Optional.absent()).or(defaultValue);
   }
-  
+
   /**
-   * Return the value of the property as a short if it exists or 0 if it 
+   * Return the value of the property as a short if it exists or 0 if it
    * does not
    * @param key String
    * @return short
@@ -1741,7 +1743,7 @@ public float getFloat(String key, float defaultValue) {
   public short getShort(String key) {
     return getShort(key,(short)0);
   }
-  
+
   /**
    * Return the value of the property as a short if it exists or defaultValue
    * if it does not
@@ -1752,9 +1754,9 @@ public short getShort(String key) {
   public short getShort(String key, short defaultValue) {
     return get(key, toShort, Optional.absent()).or(defaultValue);
   }
-  
+
   /**
-   * return the value of the property as a boolean if it exists or false 
+   * return the value of the property as a boolean if it exists or false
    * if it does not
    * @param key String
    * @return boolean
@@ -1762,7 +1764,7 @@ public short getShort(String key, short defaultValue) {
   public boolean getBoolean(String key) {
     return getBoolean(key,false);
   }
-  
+
   /**
    * Return the value of the property as a boolean if it exists or defaultValue
    * if it does not
@@ -1771,11 +1773,11 @@ public boolean getBoolean(String key) {
    * @return boolean
    */
   public boolean getBoolean(
-    String key, 
+    String key,
     boolean defaultValue) {
       return get(key, toBoolean, Optional.absent()).or(defaultValue);
   }
-  
+
   /**
    * Method _get.
    * @param key String
@@ -1784,7 +1786,7 @@ public boolean getBoolean(
   private Optional _get(String key) {
     return Optional.fromNullable((V)map.get(key));
   }
-  
+
   /**
    * Method _get.
    * @param key String
@@ -1794,29 +1796,29 @@ private Optional _get(String key) {
   private Optional _get(String key, Function transform) {
     return this._get(key).transform(transform);
   }
-  
+
   /**
    * Return the value if it exists or defaultValue if it does not
    * @param key String
    * @param defaultValue V
-   * @return V 
+   * @return V
    **/
   public V get(String key, V defaultValue) {
     return defaultValue != null ?
       this._get(key).or(defaultValue) :
       this._get(key).orNull();
   }
-  
+
   /**
    * Returns the value of the property, transformed using the given function
    * @param key String
    * @param transform Function
-   * @return V2 
+   * @return V2
    **/
   public V2 get(String key, Function transform, V2 defaultValue) {
     return this._get(key,transform).or(defaultValue);
   }
-  
+
   /**
    * Returns the value of the given property converted using the given converter
    * @param key String
@@ -1826,14 +1828,14 @@ public V2 get(String key, Function transform, V2 defaultValue) {
   public V2 get(String key, Converter converter) {
     return this._get(key,converter).orNull();
   }
-  
+
   /**
    * Returns the value of the property if it exists or defaultValue if it
    * does not
    * @param key String
    * @param def V2
    * @param transform Function
-   * @return V2 
+   * @return V2
    **/
   public V2 get(String key, V2 def, Function transform) {
     return this._get(key,transform).or(def);
@@ -1841,123 +1843,123 @@ public V2 get(String key, V2 def, Function transform) {
 
   /**
    * Returns an iterator listing all of the properties defined on this object
-   * @return Iterator 
-   * @see java.lang.Iterable#iterator() 
+   * @return Iterator
+   * @see java.lang.Iterable#iterator()
    **/
   public Iterator iterator() {
     return map.keySet().iterator();
   }
-  
+
   /**
    * Return this objects identifier
-   * @return String 
-   * @see com.ibm.common.activitystreams.TypeValue#id() 
+   * @return String
+   * @see com.ibm.common.activitystreams.TypeValue#id()
    **/
   public String id() {
     return this.getString("id");
   }
-  
+
   /**
    * Return the objectType
-   * @return T 
+   * @return T
    **/
   public T objectType() {
     return this.get("objectType");
   }
-  
+
   /**
    * Return this object's type identifier as a string
-   * @return String 
+   * @return String
    **/
   public String objectTypeString() {
     return typeValueAsString("objectType");
   }
-  
+
   /**
    * Method typeValueAsString.
    * @param name String
-   * @return String 
+   * @return String
    **/
   protected String typeValueAsString(String name) {
     TypeValue tv = this.get(name);
     return tv != null ? tv.id() : null;
   }
-  
+
   /**
    * Return this object's language context
-   * @return String 
+   * @return String
    **/
   public String language() {
     return this.getString("language");
   }
-  
+
   /**
    * Return this objects displayName as an NLV object
-   * @return NLV 
+   * @return NLV
    **/
   public NLV displayName() {
     return this.get("displayName");
   }
-  
+
   /**
    * Return this objects displayName
-   * @return String 
+   * @return String
    **/
   public String displayNameString() {
     return _nlv("displayName");
   }
-  
+
   /**
    * Method displayNameString.
    * @param lang String
-   * @return String 
+   * @return String
    **/
   public String displayNameString(String lang) {
     return _nlv("displayName", lang);
   }
-  
+
   /**
    * Method _nlv.
    * @param key String
-   * @return String 
+   * @return String
    **/
   protected String _nlv(String key) {
     String lang = language();
     return _nlv(key, lang != null ? lang : DEFAULT_LOCALE);
   }
-  
+
   /**
    * Method _nlv.
    * @param key String
    * @param lang String
-   * @return String 
+   * @return String
    **/
   protected String _nlv(String key, String lang) {
-    NLV nlv = 
+    NLV nlv =
       this.get(key);
     switch(nlv.valueType()) {
     case SIMPLE:
-      NLV.SimpleNLV sim = 
+      NLV.SimpleNLV sim =
         (SimpleNLV) nlv;
       String l = language();
       return l == null || Objects.equal(l,lang) ? sim.value() : null;
     case OBJECT:
-      NLV.MapNLV map = 
+      NLV.MapNLV map =
        (MapNLV) nlv;
       return map.value(lang);
     default:
       return null;
-    } 
+    }
   }
-  
+
   /**
    * Return this objects URL LinkValues
-   * @return java.util.Iterable<LinkValue> 
+   * @return java.util.Iterable<LinkValue>
    **/
   public Iterable url() {
     return links("url");
   }
-  
+
   /**
    * Return the matching URL LinkValues
    * @return java.util.Iterable<LinkValue>
@@ -1965,7 +1967,7 @@ public Iterable url() {
   public Iterable url(Predicate test) {
     return links("url", test);
   }
-  
+
   /**
    * Return this objects first URL LinkValue
    * @return LinkValue
@@ -1973,7 +1975,7 @@ public Iterable url(Predicate test) {
   public LinkValue firstUrl() {
     return firstLink("url");
   }
-  
+
   /**
    * Return this objects first matching LinkValue
    * @param test
@@ -1982,35 +1984,35 @@ public LinkValue firstUrl() {
   public LinkValue firstMatchingUrl(Predicate test) {
     return firstMatchingLink("url", test);
   }
-  
+
   /**
    * Return this object's mediaType
-   * @return MediaType 
+   * @return MediaType
    **/
   public MediaType mediaType() {
     return this.get("mediaType");
   }
-  
+
   /**
    * Returns the value of this objects's rel property
-   * @return String 
+   * @return String
    **/
   public String rel() {
     return this.getString("rel");
   }
-  
+
   /**
    * Returns this value of this object's alias property
-   * @return String 
+   * @return String
    **/
   public String alias() {
     return this.getString("alias");
   }
-  
+
   /**
    * Return the given set of links
    * @param name String
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   protected Iterable links(String name) {
     LinkValue lv = this.get(name);
@@ -2018,31 +2020,31 @@ protected Iterable links(String name) {
     return lv.valueType() == ValueType.ARRAY ?
       (Iterable)lv : of(lv);
   }
-  
+
   protected Iterable links(
-    String name, 
+    String name,
     Predicate test) {
       return filter(links(name), test);
   }
-  
+
   protected LinkValue firstLink(String name) {
     return getFirst(links(name), null);
   }
-  
+
   protected LinkValue firstMatchingLink(
-    String name, 
+    String name,
     Predicate test) {
       return getFirst(links(name,test), null);
   }
-  
+
   /**
    * Return the set of attachments
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable attachments() {
     return links("attachments");
   }
-  
+
   /**
    * Return the matching set of attachments;
    * @param test
@@ -2051,7 +2053,7 @@ public Iterable attachments() {
   public Iterable attachments(Predicate test) {
     return links("attachments", test);
   }
-  
+
   /**
    * Return the first attachment for this object
    * @return LinkValue
@@ -2059,7 +2061,7 @@ public Iterable attachments(Predicate test) {
   public LinkValue firstAttachment() {
     return firstLink("attachments");
   }
-  
+
   /**
    * Return the first matching attachment
    * @param test
@@ -2068,15 +2070,15 @@ public LinkValue firstAttachment() {
   public LinkValue firstMatchingAttachment(Predicate test) {
     return firstMatchingLink("attachments", test);
   }
-  
+
   /**
    * Return this authors of this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable author() {
     return links("author");
   }
-  
+
   /**
    * Return the matching authors of this object
    * @return java.util.Iterable
@@ -2084,7 +2086,7 @@ public Iterable author() {
   public Iterable author(Predicate test) {
     return links("author", test);
   }
-  
+
   /**
    * Return the first author
    * @return LinkValue
@@ -2092,7 +2094,7 @@ public Iterable author(Predicate test) {
   public LinkValue firstAuthor() {
     return firstLink("author");
   }
-  
+
   /**
    * Return the first matching author
    * @param test
@@ -2101,15 +2103,15 @@ public LinkValue firstAuthor() {
   public LinkValue firstMatchingAuthor(Predicate test) {
     return firstMatchingLink("author", test);
   }
-  
+
   /**
    * Return the collection of duplicates for this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable duplicates() {
     return links("duplicates");
   }
-  
+
   /**
    * Return the matching duplicates
    * @param test
@@ -2118,7 +2120,7 @@ public Iterable duplicates() {
   public Iterable duplicates(Predicate test) {
     return links("duplicates", test);
   }
-  
+
   /**
    * Return the first duplicate
    * @return LinkValue
@@ -2126,7 +2128,7 @@ public Iterable duplicates(Predicate test) {
   public LinkValue firstDuplicate() {
     return firstLink("duplicates");
   }
-  
+
   /**
    * Return the first matching duplicate
    * @param test
@@ -2135,14 +2137,14 @@ public LinkValue firstDuplicate() {
   public LinkValue firstMatchingDuplicate(Predicate test) {
     return firstMatchingLink("duplicates", test);
   }
-  
+
   /**
    * Return the icons for this object
    * @return java.util.Iterable */
   public Iterable icon() {
     return links("icon");
   }
-  
+
   /**
    * Return the matching icons for this object
    * @return java.util.Iterable
@@ -2150,7 +2152,7 @@ public Iterable icon() {
   public Iterable icon(Predicate test) {
     return links("icon", test);
   }
-  
+
   /**
    * Return the first icon
    * @return LinkValue
@@ -2158,7 +2160,7 @@ public Iterable icon(Predicate test) {
   public LinkValue firstIcon() {
     return firstLink("icon");
   }
-  
+
   /**
    * Return thie first matching icon
    * @param test
@@ -2167,7 +2169,7 @@ public LinkValue firstIcon() {
   public LinkValue firstMatchingIcon(Predicate test) {
     return firstMatchingLink("icon", test);
   }
-  
+
   /**
    * Return the image for this object
    * @return java.util.Iterable
@@ -2175,7 +2177,7 @@ public LinkValue firstMatchingIcon(Predicate test) {
   public Iterable image() {
     return links("image");
   }
-  
+
   /**
    * Return the matching images for this object
    * @param test
@@ -2184,7 +2186,7 @@ public Iterable image() {
   public Iterable image(Predicate test) {
     return links("image", test);
   }
-  
+
   /**
    * Return the first image
    * @return LinkValue
@@ -2192,7 +2194,7 @@ public Iterable image(Predicate test) {
   public LinkValue firstImage() {
     return firstLink("image");
   }
-  
+
   /**
    * Return the first matching image
    * @param test
@@ -2201,15 +2203,15 @@ public LinkValue firstImage() {
   public LinkValue firstMatchingImage(Predicate test) {
     return firstMatchingLink("image", test);
   }
-  
+
   /**
    * Return the location associated with this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable location() {
     return links("location");
   }
-  
+
   /**
    * Return the matching locations associated with this object
    * @param test
@@ -2218,7 +2220,7 @@ public Iterable location() {
   public Iterable location(Predicate test) {
     return links("location", test);
   }
-  
+
   /**
    * Return the first location associated with this object
    * @return LinkValue
@@ -2226,7 +2228,7 @@ public Iterable location(Predicate test) {
   public LinkValue firstLocation() {
     return firstLink("location");
   }
-  
+
   /**
    * Return the first matching location associated with this object
    * @param test
@@ -2235,15 +2237,15 @@ public LinkValue firstLocation() {
   public LinkValue firstMatchingLocation(Predicate test) {
     return firstMatchingLink("location", test);
   }
-  
+
   /**
    * Return the generators for this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable generator() {
     return links("generator");
   }
-  
+
   /**
    * Return the matching generators for this object
    * @return java.util.Iterable
@@ -2251,7 +2253,7 @@ public Iterable generator() {
   public Iterable generator(Predicate test) {
     return links("generator", test);
   }
-  
+
   /**
    * Return the first generator for this object
    * @return LinkValue
@@ -2259,7 +2261,7 @@ public Iterable generator(Predicate test) {
   public LinkValue firstGenerator() {
     return firstLink("generator");
   }
-  
+
   /**
    * Return the first matching generator for this object
    * @param test
@@ -2268,15 +2270,15 @@ public LinkValue firstGenerator() {
   public LinkValue firstMatchingGenerator(Predicate test) {
     return firstMatchingLink("generator", test);
   }
-  
+
   /**
    * Return the providers for this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable provider() {
     return links("provider");
   }
-  
+
   /**
    * Return the matching providers for this object
    * @return java.util.Iterable
@@ -2284,7 +2286,7 @@ public Iterable provider() {
   public Iterable provider(Predicate test) {
     return links("provider", test);
   }
-  
+
   /**
    * Return the first provider for this object
    * @return LinkValue
@@ -2292,7 +2294,7 @@ public Iterable provider(Predicate test) {
   public LinkValue firstProvider() {
     return firstLink("provider");
   }
-  
+
   /**
    * Return the first matching providers for this object
    * @param test
@@ -2301,15 +2303,15 @@ public LinkValue firstProvider() {
   public LinkValue firstMatchingProvider(Predicate test) {
     return firstMatchingLink("provider", test);
   }
-  
+
   /**
    * Return the tags for this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable tags() {
     return links("tags");
   }
-  
+
   /**
    * Return the matching tags for this object
    * @return java.util.Iterable
@@ -2317,7 +2319,7 @@ public Iterable tags() {
   public Iterable tags(Predicate test) {
     return links("tags", test);
   }
-  
+
   /**
    * Return the first tag for this object
    * @return LinkValue
@@ -2325,7 +2327,7 @@ public Iterable tags(Predicate test) {
   public LinkValue firstTag() {
     return firstLink("tags");
   }
-  
+
   /**
    * Return this first matching tag for this object
    * @param test
@@ -2334,15 +2336,15 @@ public LinkValue firstTag() {
   public LinkValue firstMatchingTag(Predicate test) {
     return firstMatchingLink("tags", test);
   }
-  
+
   /**
    * Return the inReplyTo links for this object
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable inReplyTo() {
     return links("inReplyTo");
   }
-  
+
   /**
    * Return the matching inReplyTo links for this object
    * @return java.util.Iterable
@@ -2350,7 +2352,7 @@ public Iterable inReplyTo() {
   public Iterable inReplyTo(Predicate test) {
     return links("inReplyTo", test);
   }
-  
+
   /**
    * Return the first inReplyTo link for this object
    * @return LinkValue
@@ -2358,7 +2360,7 @@ public Iterable inReplyTo(Predicate test) {
   public LinkValue firstInReplyTo() {
     return firstLink("inReplyTo");
   }
-  
+
   /**
    * Return the first matching inReplyTo link for this object
    * @param test
@@ -2367,23 +2369,23 @@ public LinkValue firstInReplyTo() {
   public LinkValue firstMatchingInReplyTo(Predicate test) {
     return firstMatchingLink("inReplyTo", test);
   }
-  
+
   /**
    * Return the content of this object
-   * @return NLV 
+   * @return NLV
    **/
   public NLV content() {
     return this.get("content");
   }
-  
+
   /**
    * Return the content of this object
-   * @return String 
+   * @return String
    **/
   public String contentString() {
     return _nlv("content");
   }
-  
+
   /**
    * Return the content of this object for the given language
    * @param lang String
@@ -2391,48 +2393,48 @@ public String contentString() {
   public String contentString(String lang) {
     return _nlv("content", lang);
   }
-  
+
   /**
    * Return the title of this object
-   * @return NLV 
+   * @return NLV
    **/
   public NLV title() {
     return this.get("title");
   }
-  
+
   /**
    * Return the title of this object
-   * @return String 
+   * @return String
    **/
   public String titleString() {
     return _nlv("title");
   }
-  
+
   /**
    * Return the title of this object for the given language
    * @param lang String
-   * @return String 
+   * @return String
    **/
   public String titleString(String lang) {
     return _nlv("title", lang);
   }
-  
+
   /**
    * Return the summary of this object
-   * @return NLV 
+   * @return NLV
    **/
   public NLV summary() {
     return this.get("summary");
   }
-  
+
   /**
    * Return the summary of this object
-   * @return String 
+   * @return String
    **/
   public String summaryString() {
     return _nlv("summary");
   }
-  
+
   /**
    * Return the summary of this object for the given language
    * @param lang String
@@ -2440,93 +2442,93 @@ public String summaryString() {
   public String summaryString(String lang) {
     return _nlv("summary", lang);
   }
-  
+
   /**
    * Return the published timestamp for this object
    * @return DateTime */
   public DateTime published() {
     return this.getDateTime("published");
   }
-  
+
   /**
    * Return the updated timestamp for this object
-   * @return DateTime 
+   * @return DateTime
    **/
   public DateTime updated() {
     return this.getDateTime("updated");
   }
-  
+
   /**
    * Return the startTime timestamp for this object
-   * @return DateTime 
+   * @return DateTime
    **/
   public DateTime startTime() {
     return this.getDateTime("startTime");
   }
-  
+
   /**
    * Return the endTime timestamp for this object
-   * @return DateTime 
+   * @return DateTime
    **/
   public DateTime endTime() {
     return this.getDateTime("endTime");
   }
-  
+
   /**
    * Return the rating property for this object
-   * @return double 
+   * @return double
    **/
   public double rating() {
     return checkRating(getDouble("rating"));
   }
-  
+
   /**
    * Return the duration of this object
-   * @return Duration 
+   * @return Duration
    **/
   public Duration duration() {
     return this.get("duration", toDuration, Optional.absent()).orNull();
   }
-  
+
   /**
    * Return the height of this object in device independent pixels
-   * @return int 
+   * @return int
    **/
   public int height() {
     return checkNotNegative(getInt("height"));
   }
-  
+
   /**
    * Return the width of this object in device independent pixels
-   * @return int 
+   * @return int
    **/
   public int width() {
     return checkNotNegative(getInt("width"));
   }
-  
+
   /**
    * Return the replies collection for this object
    * @return Collection */
   public Collection replies() {
     return this.get("replies");
   }
-  
+
   /**
    * Return the actions collection for this object
-   * @return ActionsValue 
+   * @return ActionsValue
    */
   public ActionsValue actions() {
     return this.get("actions");
   }
-  
+
   /**
    * Return the scope
-   * @return java.util.Iterable 
+   * @return java.util.Iterable
    **/
   public Iterable scope() {
     return links("scope");
   }
-  
+
   /**
    * Return the matching scope items
    * @return java.util.Iterable
@@ -2534,7 +2536,7 @@ public Iterable scope() {
   public Iterable scope(Predicate test) {
     return links("scope", test);
   }
-  
+
   /**
    * Return the first scope item
    * @return LinkValue
@@ -2542,7 +2544,7 @@ public Iterable scope(Predicate test) {
   public LinkValue firstScope() {
     return firstLink("scope");
   }
-  
+
   /**
    * Return the first matching scope item
    * @param test
@@ -2568,11 +2570,11 @@ public boolean equals(Object obj) {
     if (getClass() != obj.getClass())
       return false;
     ASObject other = (ASObject) obj;
-    return 
+    return
       difference(map, other.map)
         .areEqual();
   }
-  
+
   /**
    * Return the valueType of this object (always returns ValueType.OBJECT)
    * @return ValueType
@@ -2581,15 +2583,15 @@ public boolean equals(Object obj) {
   public ValueType valueType() {
     return ValueType.OBJECT;
   }
-  
-  
-  // Java Serialization support... 
-  
+
+
+  // Java Serialization support...
+
   Object writeReplace() throws java.io.ObjectStreamException {
     return new SerializedForm(this);
   }
-  
-  private static class SerializedForm 
+
+  private static class SerializedForm
     extends AbstractSerializedForm {
     protected SerializedForm(ASObject obj) {
       super(obj);
@@ -2602,16 +2604,16 @@ Object readResolve() throws ObjectStreamException {
       return super.doReadResolve();
     }
   }
-  
-  protected static abstract class AbstractSerializedForm 
+
+  protected static abstract class AbstractSerializedForm
     implements Serializable {
     private static final long serialVersionUID = -801787904013409277L;
     private ImmutableMap map;
-    protected AbstractSerializedForm(A obj) {      
+    protected AbstractSerializedForm(A obj) {
       this.map = ImmutableMap.copyOf(Maps.transformValues(obj.map, SerializableTransform));
     }
     protected abstract ASObject.AbstractBuilder builder();
-    protected Object doReadResolve() 
+    protected Object doReadResolve()
       throws java.io.ObjectStreamException {
         ASObject.AbstractBuilder builder = builder();
         for (Map.Entry entry : map.entrySet()) {
@@ -2623,8 +2625,8 @@ protected Object doReadResolve()
         return builder.get();
     }
   }
-  
-  private static final Function SerializableTransform = 
+
+  private static final Function SerializableTransform =
     new Function() {
       public Object apply(Object input) {
         if (input instanceof MediaType)
@@ -2632,8 +2634,8 @@ public Object apply(Object input) {
         return input;
       }
     };
-  
-  private static final class SerializableMediaType 
+
+  private static final class SerializableMediaType
     implements Serializable {
     private static final long serialVersionUID = -3162545492169619570L;
     private String mediaType;
diff --git a/core/src/main/java/com/ibm/common/activitystreams/internal/ASObjectAdapter.java b/core/src/main/java/com/ibm/common/activitystreams/internal/ASObjectAdapter.java
index 348fe79..fb55b70 100755
--- a/core/src/main/java/com/ibm/common/activitystreams/internal/ASObjectAdapter.java
+++ b/core/src/main/java/com/ibm/common/activitystreams/internal/ASObjectAdapter.java
@@ -51,15 +51,15 @@
  * @author james
  * @version $Revision: 1.0 $
  */
-public class ASObjectAdapter 
+public class ASObjectAdapter
   extends Adapter {
 
   private final Schema schema;
-  
+
   protected Schema schema() {
     return schema;
   }
-  
+
   /**
    * Constructor for ASObjectAdapter.
    * @param schema Schema
@@ -67,43 +67,43 @@ protected Schema schema() {
   protected ASObjectAdapter(Schema schema) {
     this.schema = schema;
   }
-  
+
   /**
    * Method serialize.
    * @param obj ASObject
    * @param type Type
    * @param context JsonSerializationContext
-  
+
    * @return JsonElement */
   public final JsonElement serialize(
-    ASObject obj, 
+    ASObject obj,
     Type type,
     JsonSerializationContext context) {
-    JsonObject el = 
+    JsonObject el =
       new JsonObject();
     for (String key : obj) {
       Object val = obj.get(key);
       if (val != null) {
         el.add(
-          key, 
+          key,
           context.serialize(
-            val, 
+            val,
             val.getClass()));
       }
     }
     return el;
-    
+
   }
 
-  private static final ImmutableSet knownTypes = 
+  private static final ImmutableSet knownTypes =
     ImmutableSet.of(
       Collection.class,
       Activity.class);
-  
+
   protected boolean knowsType(Type type) {
     return knownTypes.contains(type);
   }
-  
+
   protected ASObject.AbstractBuilder builderFor(Type type) {
     if (type == Collection.class)
       return collection();
@@ -111,49 +111,49 @@ else if (type == Activity.class)
       return activity();
     else return null;
   }
-  
+
   protected Model modelFor(Type type) {
     if (type == Collection.class)
       return schema.forObjectClassOrType(
-        Collection.Builder.class, 
+        Collection.Builder.class,
         "collection");
     else if (type == Activity.class)
       return schema.forObjectClassOrType(
-        Activity.Builder.class, 
+        Activity.Builder.class,
         "activity");
     else return null;
   }
-  
+
   /**
    * Method deserialize.
    * @param element JsonElement
    * @param type Type
    * @param context JsonDeserializationContext
-   * @return ASObject 
+   * @return ASObject
    * @throws JsonParseException
-   * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext) 
+   * @see com.google.gson.JsonDeserializer#deserialize(JsonElement, Type, JsonDeserializationContext)
    **/
   public final ASObject deserialize(
-    JsonElement element, 
+    JsonElement element,
     Type type,
-    JsonDeserializationContext context) 
+    JsonDeserializationContext context)
       throws JsonParseException {
-    
+
     JsonObject obj = (JsonObject)element;
     ASObject.AbstractBuilder builder = null;
     Model propMap = null;
     TypeValue tv = null;
-    
+
     if (knowsType(type)) {
       builder = builderFor(type);
       propMap = modelFor(type);
     } else {
       if (obj.has("objectType")) {
         tv = context.deserialize(
-          obj.get("objectType"), 
+          obj.get("objectType"),
           TypeValue.class);
         @SuppressWarnings("rawtypes")
-        Class _class = 
+        Class _class =
           schema.builderForObjectTypeOrClass(tv.id(), (Class)type);
         if (_class != null) {
           propMap = schema.forObjectClassOrType(_class, tv.id());
@@ -162,7 +162,7 @@ public final ASObject deserialize(
               builder = _class.getConstructor(String.class).newInstance(tv.id());
             } catch (Throwable t) {
               try {
-                builder = _class.newInstance();
+                builder = _class.getDeclaredConstructor().newInstance();
                 builder.set("objectType", tv);
               } catch (Throwable t2) {
                 builder = Makers.object(tv);
@@ -176,9 +176,9 @@ public final ASObject deserialize(
             ASObject.Builder.class, tv.id());
         }
       } else {
-        if (obj.has("verb") && 
-            (obj.has("actor") || 
-             obj.has("object") || 
+        if (obj.has("verb") &&
+            (obj.has("actor") ||
+             obj.has("object") ||
              obj.has("target"))) {
            builder = activity();
            propMap = schema.forObjectClassOrType(
@@ -186,16 +186,16 @@ public final ASObject deserialize(
          } else if (obj.has("items")) {
            builder = collection();
            propMap = schema.forObjectClassOrType(
-             Collection.Builder.class, 
+             Collection.Builder.class,
              "collection");
          } else {
            @SuppressWarnings("rawtypes")
-          Class _class = 
+          Class _class =
              schema.builderFor((Class)type);
            if (_class != null) {
              if (!_class.isInterface()) {
                try {
-                 builder = _class.newInstance();
+                 builder = _class.getDeclaredConstructor().newInstance();
                } catch (Throwable t) {
                  builder = object();
                }
@@ -204,14 +204,14 @@ public final ASObject deserialize(
            if (builder == null)
              builder = object(); // anonymous
            propMap = schema.forObjectClass(builder.getClass());
-           propMap = propMap != null ? 
-             propMap : 
+           propMap = propMap != null ?
+             propMap :
              schema.forObjectClass(
                ASObject.Builder.class);
          }
       }
     }
-    
+
     for (Entry entry : obj.entrySet()) {
       String name = entry.getKey();
       if (name.equalsIgnoreCase("objectType")) continue;
@@ -223,7 +223,7 @@ public final ASObject deserialize(
           _class != null ?
             context.deserialize(val,_class) :
             primConverter.convert(val.getAsJsonPrimitive()));
-      else if (val.isJsonArray()) { 
+      else if (val.isJsonArray()) {
         builder.set(
           name,
           LinkValue.class.isAssignableFrom(_class!=null?_class:Object.class) ?
@@ -235,17 +235,17 @@ else if (val.isJsonArray()) {
               builder()));
       } else if (val.isJsonObject())
         builder.set(
-          name, 
-          context.deserialize(
-            val, 
-            propMap.has(name) ? 
+          name,
+          (Object) context.deserialize(
+            val,
+            propMap.has(name) ?
               propMap.get(name):
               ASObject.class));
     }
     return builder.get();
-    
+
   }
-  
+
   /**
    * Method convert.
    * @param arr JsonArray
@@ -255,8 +255,8 @@ else if (val.isJsonArray()) {
    * @return ImmutableList
    */
   private ImmutableList convert(
-    JsonArray arr, 
-    Class _class, 
+    JsonArray arr,
+    Class _class,
     JsonDeserializationContext context,
     ImmutableList.Builder list) {
     processArray(arr, _class, context, list);
@@ -271,23 +271,23 @@ private ImmutableList convert(
    * @param list ImmutableList.Builder
    */
   private void processArray(
-    JsonArray arr, 
-    Class _class, 
-    JsonDeserializationContext context, 
+    JsonArray arr,
+    Class _class,
+    JsonDeserializationContext context,
     ImmutableList.Builder list) {
     for (JsonElement mem : arr) {
       if (mem.isJsonPrimitive())
         list.add(
-          _class != null ? 
+          _class != null ?
             context.deserialize(mem,_class) :
             primConverter.convert(
               mem.getAsJsonPrimitive()));
       else if (mem.isJsonObject())
         list.add(
           context.deserialize(
-            mem, 
-            _class != null ? 
-              _class : 
+            mem,
+            _class != null ?
+              _class :
               ASObject.class));
       else if (mem.isJsonArray())
         list.add(
@@ -298,8 +298,8 @@ else if (mem.isJsonArray())
             builder()));
     }
   }
-  
-  public static final Converter primConverter = 
+
+  public static final Converter primConverter =
     new Converter() {
       @Override
       protected JsonPrimitive doBackward(Object a) {
@@ -307,7 +307,7 @@ protected JsonPrimitive doBackward(Object a) {
           return new JsonPrimitive((Boolean)a);
         else if (a instanceof Number)
           return new JsonPrimitive((Number)a);
-        else 
+        else
           return new JsonPrimitive(a.toString());
       }
       @Override
@@ -316,7 +316,7 @@ protected Object doForward(JsonPrimitive b) {
           return b.getAsBoolean();
         else if (b.isNumber())
           return b.getAsNumber();
-        else 
+        else
           return b.getAsString();
       }
   };
diff --git a/core/src/main/java/com/ibm/common/activitystreams/internal/Adapters.java b/core/src/main/java/com/ibm/common/activitystreams/internal/Adapters.java
index d7cf209..495b303 100755
--- a/core/src/main/java/com/ibm/common/activitystreams/internal/Adapters.java
+++ b/core/src/main/java/com/ibm/common/activitystreams/internal/Adapters.java
@@ -22,6 +22,7 @@
 package com.ibm.common.activitystreams.internal;
 
 import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Throwables.throwIfUnchecked;
 import static com.google.common.collect.Iterables.getFirst;
 import static com.google.common.collect.Iterables.size;
 
@@ -40,7 +41,6 @@
 import org.joda.time.format.ISODateTimeFormat;
 
 import com.google.common.base.Optional;
-import com.google.common.base.Throwables;
 import com.google.common.collect.BoundType;
 import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Range;
@@ -75,7 +75,7 @@ private Adapters() {}
   static >EnumAdapter forEnum(Class _enumClass) {
     return new EnumAdapter(_enumClass);
   }
-  
+
   /**
    * Method forEnum.
    * @param _enumClass Class
@@ -85,25 +85,25 @@ static >EnumAdapter forEnum(Class _enumClass) {
   static >EnumAdapter forEnum(Class _enumClass, E or) {
     return new EnumAdapter(_enumClass,or);
   }
-  
-  static final Adapter NLV = 
+
+  static final Adapter NLV =
     new NaturalLanguageValueAdapter();
-  
+
   static final Adapter ACTIONS =
     new AbstractDictionaryObjectAdapter
       (LinkValue.class) {
     public JsonElement serialize(
-      ActionsValue actions, 
+      ActionsValue actions,
       Type type,
       JsonSerializationContext context) {
         JsonObject obj = new JsonObject();
         for (String verb : actions) {
-          Iterable links = 
+          Iterable links =
             actions.get(verb);
           obj.add(
-            verb, 
+            verb,
             context.serialize(
               size(links) == 1 ? // if there's only one, serialize just 1
                 getFirst(links,null) : // otherwise, serialize the list
@@ -117,12 +117,12 @@ protected ActionsValue.Builder builder() {
       return actions();
     }
   };
-  
-  static final Adapter> ITERABLE = 
+
+  static final Adapter> ITERABLE =
     new Adapter>() {
 
       public JsonElement serialize(
-        Iterable i, 
+        Iterable i,
         Type type,
         JsonSerializationContext context) {
         JsonArray ary = new JsonArray();
@@ -135,10 +135,10 @@ public Iterable deserialize(JsonElement arg0, Type arg1,
           JsonDeserializationContext arg2) throws JsonParseException {
         return null; // handled elsewhere
       }
-    
+
   };
-  
-  static final Adapter DATE = 
+
+  static final Adapter DATE =
     new SimpleAdapter() {
       protected String serialize(Date t) {
         return ISODateTimeFormat.dateTime().print(new DateTime(t));
@@ -147,7 +147,7 @@ public Date apply(String v) {
         return DateTime.parse(v).toDate();
       }
     };
-  
+
   static final Adapter DATETIME =
     new SimpleAdapter() {
       protected String serialize(DateTime t) {
@@ -157,8 +157,8 @@ public DateTime apply(String v) {
         return DateTime.parse(v);
       }
     };
-  
-  static final Adapter DURATION =  
+
+  static final Adapter DURATION =
     new SimpleAdapter() {
       public Duration apply(String v) {
         return Duration.parse(v);
@@ -178,7 +178,7 @@ public Interval apply(String v) {
         return Interval.parse(v);
       }
     };
-  
+
   static final Adapter MIMETYPE =
     new SimpleAdapter() {
       public MediaType apply(String v) {
@@ -186,15 +186,15 @@ public MediaType apply(String v) {
       }
     };
 
-  static final MultimapAdapter MULTIMAP = 
+  static final MultimapAdapter MULTIMAP =
     new MultimapAdapter();
-  
 
-  static final Adapter> RANGE = 
+
+  static final Adapter> RANGE =
     new Adapter>() {
 
     public JsonElement serialize(
-      Range src, 
+      Range src,
       Type typeOfSrc,
       JsonSerializationContext context) {
       JsonObject el = new JsonObject();
@@ -202,10 +202,10 @@ public JsonElement serialize(
       el.add("upper", makeBound(src.upperBoundType(),src.upperEndpoint(),context));
       return el;
     }
-    
+
     private JsonElement makeBound(
-      BoundType type, 
-      Object val, 
+      BoundType type,
+      Object val,
       JsonSerializationContext context) {
       JsonObject obj = new JsonObject();
       obj.add("type", context.serialize(type.name().toLowerCase()));
@@ -215,9 +215,9 @@ private JsonElement makeBound(
 
     @SuppressWarnings("rawtypes")
     public Range deserialize(
-      JsonElement json, 
+      JsonElement json,
       Type typeOfT,
-      JsonDeserializationContext context) 
+      JsonDeserializationContext context)
         throws JsonParseException {
       checkArgument(json.isJsonObject());
       try {
@@ -230,10 +230,11 @@ public Range deserialize(
         Object lb = des(lower.get("endpoint"),context);
         return Range.range((Comparable)lb, lbt, (Comparable)ub, ubt);
       } catch (Throwable t) {
-        throw Throwables.propagate(t);
+        throwIfUnchecked(t);
+        throw new RuntimeException(t);
       }
     }
-    
+
     private Object des(JsonElement val, JsonDeserializationContext context) {
       if (val.isJsonArray())
         return MultimapAdapter.arraydes(val.getAsJsonArray(), context);
@@ -241,14 +242,14 @@ else if (val.isJsonObject())
         return context.deserialize(val, ASObject.class);
       else if (val.isJsonPrimitive()) {
         Object v = primConverter.convert(val.getAsJsonPrimitive());
-        if (v instanceof LazilyParsedNumber) 
+        if (v instanceof LazilyParsedNumber)
           v = new LazilyParsedNumberComparable((LazilyParsedNumber) v);
         return v;
       }
       else
         return null;
     }
-    
+
     private BoundType bt(JsonPrimitive p) {
       try {
         return BoundType.valueOf(p.toString());
@@ -257,32 +258,32 @@ private BoundType bt(JsonPrimitive p) {
       }
     }
   };
-  
+
   static final Adapter> OPTIONAL =
     new Adapter>() {
       public JsonElement serialize(
-        Optional src, 
+        Optional src,
         Type typeOfSrc,
         JsonSerializationContext context) {
           return context.serialize(src.orNull());
       }
       public Optional deserialize(
-        JsonElement json, 
+        JsonElement json,
         Type typeOfT,
         JsonDeserializationContext context)
           throws JsonParseException {
         return null;
       }
   };
-  
-  static final Adapter> TABLE = 
+
+  static final Adapter> TABLE =
     new Adapter>() {
 
     public JsonElement serialize(
-      Table src, 
+      Table src,
       Type typeOfSrc,
       JsonSerializationContext context) {
-      
+
       JsonObject obj = new JsonObject();
       for (Table.Cell cell : src.cellSet()) {
         String r = cell.getRowKey().toString();
@@ -298,16 +299,16 @@ public JsonElement serialize(
         if (val != null)
           rowobj.add(c, context.serialize(val,val.getClass()));
       }
-      
+
       return obj;
     }
 
     public Table deserialize(
-      JsonElement json, 
+      JsonElement json,
       Type typeOfT,
-      JsonDeserializationContext context) 
+      JsonDeserializationContext context)
         throws JsonParseException {
-      ImmutableTable.Builder table = 
+      ImmutableTable.Builder table =
         ImmutableTable.builder();
       checkArgument(json.isJsonObject());
       JsonObject obj = json.getAsJsonObject();
diff --git a/core/src/main/java/com/ibm/common/activitystreams/internal/GsonWrapper.java b/core/src/main/java/com/ibm/common/activitystreams/internal/GsonWrapper.java
index 1f786bd..fde731d 100755
--- a/core/src/main/java/com/ibm/common/activitystreams/internal/GsonWrapper.java
+++ b/core/src/main/java/com/ibm/common/activitystreams/internal/GsonWrapper.java
@@ -21,6 +21,7 @@
  */
 package com.ibm.common.activitystreams.internal;
 
+import static com.google.common.base.Throwables.throwIfUnchecked;
 import static com.google.gson.internal.bind.TypeAdapters.NUMBER;
 import static com.ibm.common.activitystreams.internal.Adapters.DATE;
 import static com.ibm.common.activitystreams.internal.Adapters.DATETIME;
@@ -53,7 +54,6 @@
 
 import com.google.common.base.Optional;
 import com.google.common.base.Supplier;
-import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Range;
@@ -79,17 +79,17 @@ public final class GsonWrapper {
 
   /**
    * Method make.
-  
+
    * @return Builder */
   public static final Builder make() {
     return new Builder();
   }
-  
+
   /**
    * @author james
    * @version $Revision: 1.0 $
    */
-  public static final class Builder 
+  public static final class Builder
     implements Supplier {
 
     private String charset = "UTF-8";
@@ -97,83 +97,83 @@ public static final class Builder
     private Schema schema = null; // default
     private ImmutableList.Builder> adapters =
       ImmutableList.builder();
-    
+
     /**
      * Method charset.
      * @param charset String
-    
+
      * @return Builder */
     public Builder charset(String charset) {
       this.charset = charset;
       return this;
     }
-    
+
     /**
      * Method schema.
      * @param schema Schema
-    
+
      * @return Builder */
     public Builder schema(Schema schema) {
       this.schema = schema;
       return this;
     }
-    
+
     /**
      * Method adapter.
      * @param type Class
      * @param adapter Adapter
-    
+
      * @return Builder */
     public Builder adapter(
-      Class type, 
+      Class type,
       Adapter adapter) {
         return adapter(type,adapter,false);
     }
-    
+
     /**
      * Method adapter.
      * @param type Class
      * @param adapter Adapter
      * @param hier boolean
-    
+
      * @return Builder */
     public Builder adapter(
-      Class type, 
-      Adapter adapter, 
+      Class type,
+      Adapter adapter,
       boolean hier) {
         adapters.add(new AdapterEntry(type,adapter,hier));
         return this;
     }
-    
+
     /**
      * Method prettyPrint.
      * @param on boolean
-    
+
      * @return Builder */
     public Builder prettyPrint(boolean on) {
       this.pretty = on;
       return this;
     }
-    
+
     /**
      * Method prettyPrint.
-    
+
      * @return Builder */
     public Builder prettyPrint() {
       return prettyPrint(true);
     }
-    
+
     /**
      * Method get.
-    
-    
+
+
      * @return GsonWrapper * @see com.google.common.base.Supplier#get() */
     public GsonWrapper get() {
       return new GsonWrapper(this);
     }
-    
+
   }
-  
+
   /**
    * @author james
    * @version $Revision: 1.0 $
@@ -189,51 +189,51 @@ private final static class AdapterEntry {
      * @param hier boolean
      */
     AdapterEntry(
-      Class type, 
-      Adapter adapter, 
+      Class type,
+      Adapter adapter,
       boolean hier) {
         this.type = type;
         this.adapter = adapter;
         this.hier = hier;
     }
   }
-  
+
   private final Gson gson;
   private final String charset;
-  
+
   /**
    * Constructor for GsonWrapper.
    * @param builder Builder
    */
   protected GsonWrapper(Builder builder) {
-    Schema schema = 
-      builder.schema != null ? 
-        builder.schema : 
+    Schema schema =
+      builder.schema != null ?
+        builder.schema :
         Schema.make().get();
-    ASObjectAdapter base = 
+    ASObjectAdapter base =
       new ASObjectAdapter(schema);
     GsonBuilder b = initGsonBuilder(
       builder,
       schema,
-      base, 
+      base,
       builder.adapters.build());
     if (builder.pretty)
       b.setPrettyPrinting();
     this.gson = b.create();
     this.charset = builder.charset;
   }
-  
+
   /**
    * Method initGsonBuilder.
    * @param builder Builder
-  
+
    * @return GsonBuilder */
   private static GsonBuilder initGsonBuilder(
-    Builder builder, 
-    Schema schema, 
+    Builder builder,
+    Schema schema,
     ASObjectAdapter base,
     Iterable> adapters) {
-    
+
     GsonBuilder gson = new GsonBuilder()
     .registerTypeHierarchyAdapter(TypeValue.class, new TypeValueAdapter(schema))
     .registerTypeHierarchyAdapter(LinkValue.class, new LinkValueAdapter(schema))
@@ -252,32 +252,32 @@ private static GsonBuilder initGsonBuilder(
     .registerTypeHierarchyAdapter(ReadablePeriod.class, PERIOD)
     .registerTypeHierarchyAdapter(ReadableInterval.class, INTERVAL)
     .registerTypeAdapter(
-      Activity.Status.class, 
+      Activity.Status.class,
       forEnum(
-        Activity.Status.class, 
+        Activity.Status.class,
         Activity.Status.OTHER))
     .registerTypeAdapter(Date.class, DATE)
     .registerTypeAdapter(DateTime.class, DATETIME)
     .registerTypeAdapter(MediaType.class, MIMETYPE)
     .registerTypeHierarchyAdapter(Multimap.class, MULTIMAP);
-    
+
     for (AdapterEntry entry : adapters) {
       if (entry.hier)
         gson.registerTypeHierarchyAdapter(
-          entry.type, 
+          entry.type,
           entry.adapter!=null ?
             entry.adapter : base);
       else
         gson.registerTypeAdapter(
-          entry.type, 
-          entry.adapter!=null ? 
+          entry.type,
+          entry.adapter!=null ?
             entry.adapter:base);
     }
-    
+
     return gson;
 
   }
-  
+
   /**
    * Method write.
    * @param w Writable
@@ -285,15 +285,16 @@ private static GsonBuilder initGsonBuilder(
    */
   public void write(Writable w, OutputStream out) {
     try {
-      OutputStreamWriter wout = 
+      OutputStreamWriter wout =
         new OutputStreamWriter(out, charset);
       gson.toJson(w,wout);
       wout.flush();
     } catch (Throwable t) {
-      throw Throwables.propagate(t);
+      throwIfUnchecked(t);
+      throw new RuntimeException(t);
     }
   }
-  
+
   /**
    * Method write.
    * @param w Writable
@@ -302,38 +303,39 @@ public void write(Writable w, OutputStream out) {
   public void write(Writable w, Writer out) {
     gson.toJson(w,out);
   }
-  
+
   /**
    * Method write.
    * @param w Writable
-  
+
    * @return String */
   public String write(Writable w) {
-    StringWriter sw = 
+    StringWriter sw =
       new StringWriter();
     write(w,sw);
     return sw.toString();
   }
-  
+
   /**
    * Method readAs.
    * @param in InputStream
    * @param type Class
-  
+
    * @return A */
   public A readAs(InputStream in, Class type) {
     try {
       return readAs(new InputStreamReader(in, charset), type);
     } catch (Throwable t) {
-      throw Throwables.propagate(t);
+      throwIfUnchecked(t);
+      throw new RuntimeException(t);
     }
   }
-  
+
   /**
    * Method readAs.
    * @param in Reader
    * @param type Class
-  
+
    * @return A */
   public A readAs(Reader in, Class type) {
     return (A)gson.fromJson(in, type);
diff --git a/core/src/main/java/com/ibm/common/activitystreams/internal/Model.java b/core/src/main/java/com/ibm/common/activitystreams/internal/Model.java
index fb79d52..f5d81cb 100755
--- a/core/src/main/java/com/ibm/common/activitystreams/internal/Model.java
+++ b/core/src/main/java/com/ibm/common/activitystreams/internal/Model.java
@@ -28,7 +28,7 @@
 import org.joda.time.ReadableInterval;
 import org.joda.time.ReadablePeriod;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
@@ -477,7 +477,7 @@ public Class> builder() {
   
    * @return String */
   public String toString() {
-    return Objects.toStringHelper(Model.class)
+    return MoreObjects.toStringHelper(Model.class)
       .omitNullValues()
       .add("Parent", parent)
       .add("Properties", properties)
diff --git a/core/src/main/java/com/ibm/common/activitystreams/internal/Schema.java b/core/src/main/java/com/ibm/common/activitystreams/internal/Schema.java
index 1e56433..843ac6c 100755
--- a/core/src/main/java/com/ibm/common/activitystreams/internal/Schema.java
+++ b/core/src/main/java/com/ibm/common/activitystreams/internal/Schema.java
@@ -21,7 +21,7 @@
  */
 
 package com.ibm.common.activitystreams.internal;
-import static com.google.common.base.Objects.toStringHelper;
+import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.HashBiMap.create;
 import static com.google.common.collect.Iterables.addAll;
diff --git a/geo/pom.xml b/geo/pom.xml
index 7ad5ef9..a87f803 100755
--- a/geo/pom.xml
+++ b/geo/pom.xml
@@ -1,15 +1,18 @@
-
+
   4.0.0
   
     com.ibm.common
     activitystreams
-    0.0.1-SNAPSHOT
+    0.0.2-SNAPSHOT
   
   activitystreams-geo
   Activity Streams 2.0 - GeoJSON
-  
-  A GeoJSON Implementation that can be used standalone or with the IBM Activity Streams 2.0 Reference Implementation
-  
+
+  A GeoJSON Implementation that can be used standalone or with the IBM Activity Streams 2.0 Reference
+    Implementation
+  
+
   
     
       Apache License, Version 2.0
@@ -17,12 +20,12 @@
       repo
     
   
-  
+
   
     UTF-8
   
-  
-    
+
+  
     
       
         org.apache.maven.plugins
@@ -35,31 +38,43 @@
           -XDignore.symbol.file
           public
           
-            http://www.joda.org/joda-time/apidocs
             http://docs.guava-libraries.googlecode.com/git-history/v16.0.1/javadoc/
           
         
       
-      
+      
+        org.apache.maven.plugins
+        maven-source-plugin
+        3.2.1
+        
+          
+            attach-sources
+            
+              jar
+            
+          
+        
+      
       
         maven-compiler-plugin
-        2.3.2
+        3.8.1
         
-          1.7
-          1.7
+          1.8
+          1.8
+          true
         
       
-      
+
       
         maven-jar-plugin
         2.3.1
         
-            
+          
             ${project.build.outputDirectory}/META-INF/MANIFEST.MF
-           
+          
         
       
-      
+
       
         org.apache.felix
         maven-bundle-plugin
@@ -80,13 +95,12 @@
             
               com.ibm.common.activitystreams.*,
               com.google.gson.*,
-              com.google.common.*,
-              org.joda.time.*
+              com.google.common.*
             
           
         
       
-      
+
       
         org.apache.maven.plugins
         maven-assembly-plugin
@@ -97,9 +111,9 @@
           
         
       
-      
+
     
-    
+
     
       
         
@@ -119,7 +133,7 @@
                     
                   
                   
-                    
+                    
                   
                 
               
@@ -129,13 +143,13 @@
       
     
   
-  
+
   
     
       com.ibm.common
       activitystreams-core
-      0.0.1-SNAPSHOT
+      0.0.2-SNAPSHOT
     
   
-  
+
 
\ No newline at end of file
diff --git a/geo/src/main/java/com/ibm/common/geojson/BoundingBox.java b/geo/src/main/java/com/ibm/common/geojson/BoundingBox.java
index 57f39a6..235bd14 100644
--- a/geo/src/main/java/com/ibm/common/geojson/BoundingBox.java
+++ b/geo/src/main/java/com/ibm/common/geojson/BoundingBox.java
@@ -25,7 +25,7 @@
 import java.io.Serializable;
 import java.util.Iterator;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSortedSet;
@@ -75,7 +75,7 @@ public Iterator iterator() {
   }
   
   public String toString() {
-    return Objects.toStringHelper(BoundingBox.class)
+    return MoreObjects.toStringHelper(BoundingBox.class)
       .addValue(bounds)
       .toString();
   }
diff --git a/geo/src/main/java/com/ibm/common/geojson/CRS.java b/geo/src/main/java/com/ibm/common/geojson/CRS.java
index c71d9a4..2cf1485 100644
--- a/geo/src/main/java/com/ibm/common/geojson/CRS.java
+++ b/geo/src/main/java/com/ibm/common/geojson/CRS.java
@@ -26,7 +26,7 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableMap;
 
@@ -74,7 +74,7 @@ public CRS get() {
   }
   
   public String toString() {
-    return Objects.toStringHelper(CRS.class)
+    return MoreObjects.toStringHelper(CRS.class)
       .addValue(type)
       .addValue(properties)
       .toString();
diff --git a/geo/src/main/java/com/ibm/common/geojson/GeoObject.java b/geo/src/main/java/com/ibm/common/geojson/GeoObject.java
index 65fc410..8515e9f 100644
--- a/geo/src/main/java/com/ibm/common/geojson/GeoObject.java
+++ b/geo/src/main/java/com/ibm/common/geojson/GeoObject.java
@@ -24,7 +24,7 @@
 import java.io.Serializable;
 import java.util.Map;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Supplier;
 
 import static com.google.common.collect.ImmutableMap.copyOf;
@@ -212,7 +212,7 @@ public static final Position position(float x, float y, float z) {
   }
   
   public String toString() {
-    return Objects.toStringHelper(GeoObject.class)
+    return MoreObjects.toStringHelper(GeoObject.class)
       .add("type", type)
       .add("data", data)
       .toString();
diff --git a/legacy/pom.xml b/legacy/pom.xml
index 25e6f3f..8753d03 100644
--- a/legacy/pom.xml
+++ b/legacy/pom.xml
@@ -1,18 +1,19 @@
-
+
   4.0.0
   
     com.ibm.common
     activitystreams
-    0.0.1-SNAPSHOT
+    0.0.2-SNAPSHOT
   
   activitystreams-legacy
   Activity Streams 2.0 - Legacy objectTypes
-  
+
   
     Implementation of Legacy Activity Streams 1.0 objectTypes for
     use with the Activity Streams 2.0 Reference Implementation
   
-  
+
   
     
       Apache License, Version 2.0
@@ -20,12 +21,12 @@
       repo
     
   
-  
+
   
     UTF-8
   
-  
-      
+
+  
     
       
         org.apache.maven.plugins
@@ -43,26 +44,39 @@
           
         
       
-      
+      
+        org.apache.maven.plugins
+        maven-source-plugin
+        3.2.1
+        
+          
+            attach-sources
+            
+              jar
+            
+          
+        
+      
       
         maven-compiler-plugin
-        2.3.2
+        3.8.1
         
-          1.7
-          1.7
+          1.8
+          1.8
+          true
         
       
-      
+
       
         maven-jar-plugin
         2.3.1
         
-            
+          
             ${project.build.outputDirectory}/META-INF/MANIFEST.MF
-           
+          
         
       
-      
+
       
         org.apache.felix
         maven-bundle-plugin
@@ -89,7 +103,7 @@
           
         
       
-      
+
       
         org.apache.maven.plugins
         maven-assembly-plugin
@@ -100,9 +114,9 @@
           
         
       
-      
+
     
-    
+
     
       
         
@@ -122,7 +136,7 @@
                     
                   
                   
-                    
+                    
                   
                 
               
@@ -132,12 +146,12 @@
       
     
   
-  
+
   
     
       com.ibm.common
       activitystreams-core
-      0.0.1-SNAPSHOT
+      0.0.2-SNAPSHOT
     
   
 
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index e8b7f52..fdc13b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,12 @@
-
+
   4.0.0
   com.ibm.common
   activitystreams
-  0.0.1-SNAPSHOT
+  0.0.2-SNAPSHOT
   pom
   Activity Streams 2.0 Java Reference Implementation
-  
+
   
     
       jasnell
@@ -20,7 +21,7 @@
       -8
     
   
-  
+
   
     
       Apache License, Version 2.0
@@ -28,7 +29,7 @@
       repo
     
   
-  
+
   
     IBM
     http://www.ibm.com
@@ -37,11 +38,11 @@
     scm:https://github.com/OpenSocial/incubator.git
     http://github.com/OpenSocial/activitystreams
   
-  
+
   
     UTF-8
   
-  
+
   
     core
     actions
@@ -49,29 +50,29 @@
     assembly
     legacy
     typext
-    
+  
   
     
       
         com.google.code.gson
         gson
-        2.2.4
+        2.8.6
       
       
         com.google.guava
         guava
-        16.0.1
+        30.1.1-jre
       
       
         joda-time
         joda-time
-        2.3
+        2.10.10
       
       
       
         junit
         junit
-        4.11
+        4.13
         test
       
     
@@ -82,4 +83,20 @@
   
     https://github.com/OpenSocial/activitystreams/issues
   
+  
+    
+      nexusMirror
+      https://ips-repo.corp.exlservice.com/repository/maven-central/
+    
+  
+  
+    
+      third-party-snapshots
+      https://ips-repo.corp.exlservice.com/repository/thirdparty/
+    
+    
+      third-party
+      https://ips-repo.corp.exlservice.com/repository/thirdparty/
+    
+  
 
diff --git a/typext/pom.xml b/typext/pom.xml
index 9966778..dd1e106 100644
--- a/typext/pom.xml
+++ b/typext/pom.xml
@@ -1,13 +1,14 @@
-
+
   4.0.0
   
     com.ibm.common
     activitystreams
-    0.0.1-SNAPSHOT
+    0.0.2-SNAPSHOT
   
   activitystreams-ext
   Activity Streams 2.0 - Type Extension Support
-  
+
   
     
       Apache License, Version 2.0
@@ -15,12 +16,12 @@
       repo
     
   
-  
+
   
     UTF-8
   
-  
-      
+
+  
     
       
         org.apache.maven.plugins
@@ -33,31 +34,43 @@
           -XDignore.symbol.file
           public
           
-            http://www.joda.org/joda-time/apidocs
             http://docs.guava-libraries.googlecode.com/git-history/v16.0.1/javadoc/
           
         
       
-      
+      
+        org.apache.maven.plugins
+        maven-source-plugin
+        3.2.1
+        
+          
+            attach-sources
+            
+              jar
+            
+          
+        
+      
       
         maven-compiler-plugin
-        2.3.2
+        3.8.1
         
-          1.7
-          1.7
+          1.8
+          1.8
+          true
         
       
-      
+
       
         maven-jar-plugin
         2.3.1
         
-            
+          
             ${project.build.outputDirectory}/META-INF/MANIFEST.MF
-           
+          
         
       
-      
+
       
         org.apache.felix
         maven-bundle-plugin
@@ -75,20 +88,18 @@
         
           
             
-              com.ibm.common.activitystreams.ext.*, 
+              com.ibm.common.activitystreams.ext.*,
               com.ibm.common.activitystreams.registry.*
             
             
               com.ibm.common.activitystreams.*,
-              com.google.gson.*,
               com.google.common.*,
-              org.joda.time.*,
               org.apache.http.*,
             
           
         
       
-      
+
       
         org.apache.maven.plugins
         maven-assembly-plugin
@@ -99,9 +110,9 @@
           
         
       
-      
+
     
-    
+
     
       
         
@@ -121,7 +132,7 @@
                     
                   
                   
-                    
+                    
                   
                 
               
@@ -131,22 +142,22 @@
       
     
   
-  
+
   
     
       com.ibm.common
       activitystreams-core
-      0.0.1-SNAPSHOT
+      0.0.2-SNAPSHOT
     
     
       org.apache.httpcomponents
       httpclient-cache
-      4.3.3
+      4.5.13
     
     
       org.apache.httpcomponents
       httpcomponents-client
-      4.3.3
+      4.5.13
       pom
     
     
diff --git a/typext/src/main/java/com/ibm/common/activitystreams/registry/CachingResolutionStrategy.java b/typext/src/main/java/com/ibm/common/activitystreams/registry/CachingResolutionStrategy.java
index 09eba1a..4c40b80 100644
--- a/typext/src/main/java/com/ibm/common/activitystreams/registry/CachingResolutionStrategy.java
+++ b/typext/src/main/java/com/ibm/common/activitystreams/registry/CachingResolutionStrategy.java
@@ -1,6 +1,6 @@
 package com.ibm.common.activitystreams.registry;
 
-import static com.google.common.base.Throwables.propagate;
+import static com.google.common.base.Throwables.throwIfUnchecked;
 
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
@@ -13,16 +13,16 @@
 import com.ibm.common.activitystreams.TypeValue;
 import com.ibm.common.activitystreams.ValueType;
 
-public abstract class CachingResolutionStrategy 
+public abstract class CachingResolutionStrategy
   implements ResolutionStrategy {
 
   @SuppressWarnings("unchecked")
   public static abstract class AbstractBuilder
-    > 
+    >
     implements Supplier {
 
     private boolean silentfail = false;
-    private final CacheBuilder cache = 
+    private final CacheBuilder cache =
       CacheBuilder.newBuilder()
         .expireAfterAccess(10, TimeUnit.MINUTES)
         .expireAfterWrite(10, TimeUnit.MINUTES)
@@ -33,7 +33,7 @@ public B silentfail() {
       this.silentfail = true;
       return (B)this;
     }
-    
+
     public B customizeCache(Receiver> receiver) {
       if (receiver != null)
         receiver.receive(cache);
@@ -41,42 +41,42 @@ public B customizeCache(Receiver> receiver) {
     }
 
   }
-  
+
   private final LoadingCache cache;
   private final boolean silentfail;
-  
+
   protected LoadingCache cache() {
     return cache;
   }
-  
+
   CachingResolutionStrategy(AbstractBuilder builder) {
     this.cache = initCache(builder);
     this.silentfail = builder.silentfail;
   }
-  
+
   protected boolean silentfail() {
     return silentfail;
   }
-  
+
   private LoadingCache initCache(AbstractBuilder builder) {
     return builder.cache.build(loader());
   }
-  
+
   public Callable resolverFor(TypeValue tv) {
     return new Resolver(tv);
   }
-  
+
   protected abstract CacheLoader loader();
 
-  public final class Resolver 
+  public final class Resolver
     implements Callable {
 
     private final TypeValue input;
-    
+
     Resolver(TypeValue input) {
       this.input = input;
     }
-    
+
     public TypeValue call() throws Exception {
       try {
         if (input == null) return null;
@@ -91,21 +91,24 @@ public TypeValue call() throws Exception {
       } catch (Throwable t) {
         if (silentfail())
           return input;
-        else throw propagate(t);
+        else {
+          throwIfUnchecked(t);
+          throw new RuntimeException(t);
+        }
       }
     }
-    
+
   }
 
   public Receiver preloader() {
     return new CachePreloader(cache());
   }
- 
-  private static final class CachePreloader 
+
+  private static final class CachePreloader
     implements Receiver {
-    
+
     private final LoadingCache cache;
-    
+
     CachePreloader(LoadingCache cache) {
       this.cache = cache;
     }
@@ -123,6 +126,6 @@ public TypeValue call() {
         } catch (Throwable e) {}
       }
     }
-    
+
   }
 }
diff --git a/typext/src/main/java/com/ibm/common/activitystreams/registry/ClasspathPreloader.java b/typext/src/main/java/com/ibm/common/activitystreams/registry/ClasspathPreloader.java
index 13776e8..d12595c 100644
--- a/typext/src/main/java/com/ibm/common/activitystreams/registry/ClasspathPreloader.java
+++ b/typext/src/main/java/com/ibm/common/activitystreams/registry/ClasspathPreloader.java
@@ -1,5 +1,7 @@
 package com.ibm.common.activitystreams.registry;
 
+import static com.google.common.base.Throwables.throwIfUnchecked;
+
 import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.net.URL;
@@ -8,7 +10,6 @@
 import com.google.common.base.Charsets;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
-import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.common.hash.BloomFilter;
 import com.google.common.hash.Funnels;
@@ -17,47 +18,47 @@
 import com.ibm.common.activitystreams.IO;
 import com.ibm.common.activitystreams.TypeValue;
 
-public final class ClasspathPreloader 
+public final class ClasspathPreloader
   implements PreloadStrategy {
 
-  public static final class Builder  
+  public static final class Builder
     implements Supplier {
 
-    private ClassLoader loader = 
+    private ClassLoader loader =
       Thread.currentThread().getContextClassLoader();
     private boolean avoidDuplicates = false;
-    
+
     public Builder avoidDuplicates() {
       this.avoidDuplicates = true;
       return this;
     }
-    
+
     public Builder classLoader(ClassLoader loader) {
       this.loader = loader != null ?
         loader : Thread.currentThread().getContextClassLoader();
       return this;
     }
-    
+
     public ClasspathPreloader get() {
       return new ClasspathPreloader(this);
     }
-    
+
   }
-  
+
   private final ClassLoader loader;
   private final boolean avoidDuplicates;
-  
+
   private ClasspathPreloader(Builder builder) {
     this.loader = builder.loader;
     this.avoidDuplicates = builder.avoidDuplicates;
   }
-  
+
   public void load(IO io, Receiver receiver) {
 
-    final BloomFilter filter = 
+    final BloomFilter filter =
       avoidDuplicates ?
         BloomFilter.create(Funnels.stringFunnel(Charsets.UTF_8), 1000) : null;
-    
+
     try {
       for (InputStream in : streams.apply(loader.getResources("typeValues.bin"))) {
         try {
@@ -66,22 +67,23 @@ public void load(IO io, Receiver receiver) {
           load(col, receiver, filter);
         } catch (Throwable t) {}
       }
-    
+
       for (InputStream in : streams.apply(loader.getResources("typeValues.json"))) {
         try {
           load(io.readAsCollection(in), receiver, filter);
         } catch (Throwable t) {}
       }
-      
+
     } catch (Throwable t) {
-      throw Throwables.propagate(t);
+      throwIfUnchecked(t);
+      throw new RuntimeException(t);
     }
-    
+
   }
-  
+
   private void load(
-    Collection col, 
-    Receiver receiver, 
+    Collection col,
+    Receiver receiver,
     BloomFilter filter) {
     if (col != null && receiver != null)
       for (ASObject obj : col.items())
@@ -91,11 +93,11 @@ private void load(
           } catch (Throwable t) {}
         }
   }
-  
-  private static Function,Iterable> streams = 
+
+  private static Function,Iterable> streams =
     new Function,Iterable> () {
       public Iterable apply(Enumeration input) {
-        ImmutableList.Builder list = 
+        ImmutableList.Builder list =
           ImmutableList.builder();
         while(input.hasMoreElements()) {
           try {
@@ -106,6 +108,6 @@ public Iterable apply(Enumeration input) {
       }
   };
 
-  public static final PreloadStrategy instance = 
+  public static final PreloadStrategy instance =
     new Builder().get();
 }
diff --git a/typext/src/main/java/com/ibm/common/activitystreams/registry/DefaultResolutionStrategy.java b/typext/src/main/java/com/ibm/common/activitystreams/registry/DefaultResolutionStrategy.java
index 77ffab0..593d796 100644
--- a/typext/src/main/java/com/ibm/common/activitystreams/registry/DefaultResolutionStrategy.java
+++ b/typext/src/main/java/com/ibm/common/activitystreams/registry/DefaultResolutionStrategy.java
@@ -1,7 +1,7 @@
 package com.ibm.common.activitystreams.registry;
 
 import static com.google.common.util.concurrent.MoreExecutors.platformThreadFactory;
-import static com.google.common.base.Throwables.propagate;
+import static com.google.common.base.Throwables.throwIfUnchecked;
 
 import java.util.Set;
 import java.util.concurrent.Callable;
@@ -14,36 +14,36 @@
 import com.ibm.common.activitystreams.Makers;
 import com.ibm.common.activitystreams.TypeValue;
 
-public final class DefaultResolutionStrategy 
+public final class DefaultResolutionStrategy
   extends CachingResolutionStrategy {
 
   public static Builder make() {
     return new Builder();
   }
-  
+
   public static DefaultResolutionStrategy makeDefault() {
     return make().get();
   }
-  
-  public static final class Builder 
+
+  public static final class Builder
     extends CachingResolutionStrategy.AbstractBuilder {
 
     private boolean proactive = false;
-    private final HttpFetch.Builder fetcherBuilder = 
+    private final HttpFetch.Builder fetcherBuilder =
       new HttpFetch.Builder();
-    private final ImmutableSet.Builder proactiveTypes = 
+    private final ImmutableSet.Builder proactiveTypes =
       ImmutableSet.builder()
         .add("verb")
         .add("objectType");
-    
+
     public Builder customizeFetcher(Receiver receiver) {
-      if (receiver != null)  
+      if (receiver != null)
         receiver.receive(fetcherBuilder);
       return this;
     }
-    
+
     /**
-     * Tells the loader to proactively cache additional typevalue 
+     * Tells the loader to proactively cache additional typevalue
      * identifiers that happen to be discovered when attempting to
      * resolve a given typevalue.
      * @return
@@ -52,9 +52,9 @@ public Builder proactiveCaching() {
       this.proactive = true;
       return this;
     }
-    
+
     /**
-     * Specifies additional objectType identifiers to watch for when 
+     * Specifies additional objectType identifiers to watch for when
      * proactiveCaching is enabled.
      * @param typeValueId
      * @return
@@ -63,17 +63,17 @@ public Builder typeValueObjectType(String typeValueId) {
       proactiveTypes.add(typeValueId);
       return this;
     }
-    
+
     public DefaultResolutionStrategy get() {
       return new DefaultResolutionStrategy(this);
     }
-    
+
   }
-  
+
   private final boolean proactiveCaching;
   private final ImmutableSet proactiveTypes;
   private final HttpFetch fetcher;
-  
+
   private DefaultResolutionStrategy(Builder builder) {
     super(builder);
     this.proactiveCaching = builder.proactive;
@@ -81,17 +81,17 @@ private DefaultResolutionStrategy(Builder builder) {
     this.fetcher = initFetcher(builder);
     ensureAlwaysShutdown(this);
   }
-  
+
   private HttpFetch initFetcher(Builder builder) {
     return builder.fetcherBuilder.get();
   }
-  
+
   @Override
   protected CacheLoader loader() {
     return new DefaultCacheLoader();
   }
 
-  private final class DefaultCacheLoader 
+  private final class DefaultCacheLoader
     extends CacheLoader {
 
     @Override
@@ -105,50 +105,53 @@ public TypeValue load(TypeValue key) throws Exception {
         case SIMPLE:
           String id = key.id();
           ASObject obj = fetcher.fetch(id); // attempt to fetch an object
-          ImmutableSet.Builder additional = 
+          ImmutableSet.Builder additional =
             ImmutableSet.builder();
           if (obj instanceof Collection) {
             Collection col = (Collection) obj;
-            ASObject matching = 
+            ASObject matching =
               processItems(
-                col.items(), 
-                id, 
-                proactiveCaching, 
-                proactiveTypes, 
+                col.items(),
+                id,
+                proactiveCaching,
+                proactiveTypes,
                 additional);
             if (matching != null)
               return matching;
           } else if (obj.has("items")) {
-            Iterable items = 
+            Iterable items =
               obj.>get("items");
-            ASObject matching = 
+            ASObject matching =
               processItems(
-                items, 
-                id, 
-                proactiveCaching, 
-                proactiveTypes, 
+                items,
+                id,
+                proactiveCaching,
+                proactiveTypes,
                 additional);
             if (matching != null)
               return matching;
           } else if (Objects.equal(id, obj.id())) {
-            return obj; 
-          } 
+            return obj;
+          }
         default:
-          break;      
+          break;
         }
       } catch (Throwable t) {
         if (silentfail())
           return key;
-        else propagate(t);
+        else {
+          throwIfUnchecked(t);
+          throw new RuntimeException(t);
+        }
       }
       throw new UncacheableResponseException();
     }
   }
-  
+
   private ASObject processItems(
-    Iterable items, 
-    String lookingFor, 
-    boolean proactive, 
+    Iterable items,
+    String lookingFor,
+    boolean proactive,
     Set proactiveTypes,
     ImmutableSet.Builder additional) {
     ASObject matching = null;
@@ -164,7 +167,7 @@ private ASObject processItems(
           if (proactiveTypes.contains(otid)) {
             try {
               cache().get(
-                Makers.type(id), 
+                Makers.type(id),
                 new Callable() {
                   public TypeValue call() throws Exception {
                     return obj;
@@ -180,7 +183,7 @@ public TypeValue call() throws Exception {
 
   private static void ensureAlwaysShutdown(
     final ResolutionStrategy strategy) {
-      Thread shutdownThread = 
+      Thread shutdownThread =
         platformThreadFactory()
           .newThread(new Runnable() {
             public void run() {
diff --git a/typext/src/main/java/com/ibm/common/activitystreams/registry/HttpFetch.java b/typext/src/main/java/com/ibm/common/activitystreams/registry/HttpFetch.java
index 813fb41..50561c8 100644
--- a/typext/src/main/java/com/ibm/common/activitystreams/registry/HttpFetch.java
+++ b/typext/src/main/java/com/ibm/common/activitystreams/registry/HttpFetch.java
@@ -1,9 +1,10 @@
 package com.ibm.common.activitystreams.registry;
 
-import static com.google.common.base.Throwables.propagate;
+import static com.google.common.base.Throwables.throwIfUnchecked;
 
 import java.io.InputStream;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.http.Header;
@@ -26,7 +27,6 @@
 import org.apache.http.message.BasicHeader;
 import org.apache.http.protocol.HttpContext;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Supplier;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
@@ -40,95 +40,95 @@
 public final class HttpFetch
   extends CacheLoader {
 
-  static final class Builder 
+  static final class Builder
     implements Supplier {
 
-    private final RegistryBuilder csfr = 
+    private final RegistryBuilder csfr =
       RegistryBuilder.create()
         .register("http", PlainConnectionSocketFactory.INSTANCE);
     private ConnectionConfig defaultConnectionConfig;
     private SocketConfig defaultSocketConfig;
-    private final ImmutableMap.Builder connectionConfigs = 
+    private final ImmutableMap.Builder connectionConfigs =
       ImmutableMap.builder();
-    private final ImmutableMap.Builder socketConfigs = 
+    private final ImmutableMap.Builder socketConfigs =
       ImmutableMap.builder();
     private int maxConnectionsPerRoute = 2;
     private int maxConnections = 20;
-    private final ImmutableSet.Builder
defaultHeaders = + private final ImmutableSet.Builder
defaultHeaders = ImmutableSet.builder(); private String userAgent = null; private IO io = null; - private HttpClientBuilder builder = + private HttpClientBuilder builder = HttpClients.custom(); - - private final CacheBuilder cache = + + private final CacheBuilder cache = CacheBuilder.newBuilder() .expireAfterAccess(10, TimeUnit.MINUTES) .expireAfterWrite(10, TimeUnit.MINUTES) .maximumSize(50) .initialCapacity(50); private HttpClientConnectionManager manager; - + public Builder customizeCache( Receiver> receiver) { if (receiver != null) receiver.receive(cache); return this; } - + public Builder customizeClientBuilder( Receiver receiver) { receiver.receive(builder); return this; } - + public Builder io(IO io) { this.io = io; return this; } - + public Builder useragent(String ua) { this.userAgent = ua; return this; } - + public Builder defaultHeader(String name, String value) { defaultHeaders.add(new BasicHeader(name,value)); return this; } - + public Builder maxConnectionsPerRoute(int max) { this.maxConnectionsPerRoute = max; return this; } - + public Builder maxConnections(int max) { this.maxConnections = max; return this; } - + public Builder connectionConfig(ConnectionConfig config) { defaultConnectionConfig = config; return this; } - + public Builder connectionConfig(HttpHost host, ConnectionConfig config) { connectionConfigs.put(host,config); return this; } - + public Builder socketConfig(SocketConfig config) { defaultSocketConfig = config; return this; } - + public Builder socketConfig(HttpHost host, SocketConfig config) { socketConfigs.put(host, config); return this; } - + public Builder registerConnectionSocketFactory( - String id, + String id, ConnectionSocketFactory csf) { csfr.register(id, csf); return this; @@ -138,13 +138,13 @@ public Builder manager(HttpClientConnectionManager manager) { this.manager = manager; return this; } - + public HttpFetch get() { return new HttpFetch(this); } - + } - + private final LoadingCache cache; private final HttpClientConnectionManager manager; private final IO io; @@ -156,23 +156,23 @@ public HttpFetch get() { this.io = initIO(builder); this.client = initClient(builder); } - + public void shutdown() { try { manager.shutdown(); } catch (Throwable t) {} } - + private IO initIO(Builder builder) { if (builder.io != null) return builder.io; return IO.makeDefault(ExtModule.instance); } - + private CloseableHttpClient initClient(Builder builder) { HttpClientBuilder b = builder.builder; b.setConnectionManager(manager); - ImmutableSet
headers = + ImmutableSet
headers = builder.defaultHeaders.build(); if (!headers.isEmpty()) b.setDefaultHeaders(headers); @@ -180,11 +180,11 @@ private CloseableHttpClient initClient(Builder builder) { b.setUserAgent(builder.userAgent); return b.build(); } - + private HttpClientConnectionManager initManager(Builder builder) { if (builder.manager != null) return builder.manager; - PoolingHttpClientConnectionManager pm = + PoolingHttpClientConnectionManager pm = new PoolingHttpClientConnectionManager(builder.csfr.build()); for (Map.Entry entry : builder.connectionConfigs.build().entrySet()) pm.setConnectionConfig(entry.getKey(), entry.getValue()); @@ -198,7 +198,7 @@ private HttpClientConnectionManager initManager(Builder builder) { pm.setMaxTotal(builder.maxConnections); return pm; } - + private LoadingCache initCache(Builder builder) { return builder.cache.build(this); } @@ -207,10 +207,11 @@ public ASObject fetch(String uri) { try { return cache.get(uri); } catch (Throwable t) { - throw propagate(t); + throwIfUnchecked(t); + throw new RuntimeException(t); } } - + @Override public ASObject load(String key) throws Exception { HttpContext context = new HttpClientContext(); @@ -222,7 +223,7 @@ public ASObject load(String key) throws Exception { HttpEntity entity = resp.getEntity(); if (entity != null) { // attempt parse - Optional parsed = + Optional parsed = parse(entity.getContent()); if (parsed.isPresent()) return parsed.get(); @@ -230,12 +231,12 @@ public ASObject load(String key) throws Exception { } throw new UncacheableResponseException(); } - + private Optional parse(InputStream in) { try { - return Optional.of(io.read(in)); + return Optional.of(io.read(in)); } catch (Throwable t) { - return Optional.absent(); + return Optional.empty(); } } } diff --git a/typext/src/main/java/com/ibm/common/activitystreams/registry/TypeValueRegistry.java b/typext/src/main/java/com/ibm/common/activitystreams/registry/TypeValueRegistry.java index 1cbf9e8..4894942 100644 --- a/typext/src/main/java/com/ibm/common/activitystreams/registry/TypeValueRegistry.java +++ b/typext/src/main/java/com/ibm/common/activitystreams/registry/TypeValueRegistry.java @@ -1,11 +1,10 @@ package com.ibm.common.activitystreams.registry; -import static com.google.common.base.Throwables.propagate; +import static com.google.common.base.Throwables.throwIfUnchecked; import static com.google.common.util.concurrent.Futures.immediateFuture; import static com.google.common.util.concurrent.Futures.immediateCancelledFuture; import static com.google.common.util.concurrent.Futures.addCallback; -import static com.google.common.util.concurrent.MoreExecutors.getExitingExecutorService; -import static com.google.common.util.concurrent.MoreExecutors.listeningDecorator; +import static com.google.common.util.concurrent.MoreExecutors.*; import static java.util.concurrent.Executors.newFixedThreadPool; import java.util.concurrent.ExecutionException; @@ -29,10 +28,10 @@ /** * Maintains a registry of resolved TypeValues. If a given TypeValue - * is not currently known, an attempt will be made to resolve the + * is not currently known, an attempt will be made to resolve the * value based on the ResolutionStrategy. */ -public final class TypeValueRegistry +public final class TypeValueRegistry implements Function> { /** @@ -42,7 +41,7 @@ public final class TypeValueRegistry public static Builder make () { return new Builder(); } - + /** * Create and return a default TypeValueRegistry instance * @return TypeValueRegistry @@ -50,7 +49,7 @@ public static Builder make () { public static TypeValueRegistry makeDefault() { return make().get(); } - + /** * Create an return a default silent TypeValueRegistry instance. * Errors encountered during the resolve process will be silenced, @@ -63,9 +62,9 @@ public static TypeValueRegistry makeDefaultSilent() { .resolver(DefaultResolutionStrategy.make().silentfail().get()) .get(); } - + /** - * Create a default TypeValueRegistry instance using the + * Create a default TypeValueRegistry instance using the * given Activity Streams IO object * @param io * @return TypeValueRegistry @@ -85,9 +84,9 @@ public void receive(HttpFetch.Builder builder) { .get()) .get(); } - + /** - * Create a default silent TypeValueRegistry instance using + * Create a default silent TypeValueRegistry instance using * the given Activity Streams IO object * @param io * @return TypeValueRegistry @@ -106,20 +105,20 @@ public void receive(HttpFetch.Builder builder) { .get()) .get(); } - + public static enum Status { LOADING, READY, ERROR } - - public static final class Builder + + public static final class Builder implements Supplier { private ExecutorService executor; - private PreloadStrategy preloader = + private PreloadStrategy preloader = ClasspathPreloader.instance; - private ResolutionStrategy strategy = + private ResolutionStrategy strategy = DefaultResolutionStrategy.makeDefault(); private IO io; @@ -132,7 +131,7 @@ public Builder io(IO io) { this.io = io; return this; } - + /** * Set the ExecutorService used * @param executor @@ -142,19 +141,19 @@ public Builder executor(ExecutorService executor) { this.executor = executor; return this; } - + /** - * Set the PreloadStrategy to be used. By default the + * Set the PreloadStrategy to be used. By default the * ClasspathPreloader is used. * @param strategy * @return Builder */ public Builder preloader(PreloadStrategy strategy) { - this.preloader = strategy != null ? + this.preloader = strategy != null ? strategy : ClasspathPreloader.instance; return this; } - + /** * Set the ResolutionStrategy to use. By default, the * DefaultResolutionStrategy is used. @@ -163,57 +162,57 @@ public Builder preloader(PreloadStrategy strategy) { */ public Builder resolver(ResolutionStrategy strategy) { this.strategy = strategy != null ? - strategy : + strategy : DefaultResolutionStrategy.makeDefault(); return this; } - + public TypeValueRegistry get() { return new TypeValueRegistry(this); } - + } - + private final ResolutionStrategy strategy; private final ListeningExecutorService executor; private Status readyStatus = Status.LOADING; private Throwable loadError = null; private final ListenableFuture loader; private final IO io; - + private final Monitor monitor = new Monitor(); - private final Monitor.Guard ready = + private final Monitor.Guard ready = new Monitor.Guard(monitor) { @Override public boolean isSatisfied() { return readyStatus != Status.LOADING; } }; - + private TypeValueRegistry(Builder builder) { this.strategy = builder.strategy; this.io = initIO(builder); this.executor = initExecutor(builder); this.loader = preload(builder); } - + private IO initIO(Builder builder) { if (builder.io != null) return builder.io; return IO.makeDefault(ExtModule.instance); } - + private ListenableFuture preload(Builder builder) { final PreloadStrategy strategy = builder.preloader; final Receiver receiver = this.strategy.preloader(); - ListenableFuture future = + ListenableFuture future = executor.submit(new Runnable() { public void run() { strategy.load(io,receiver); } }); addCallback( - future, + future, new FutureCallback() { public void onSuccess(Object result) { monitor.enter(); @@ -232,29 +231,29 @@ public void onFailure(Throwable t) { monitor.leave(); } } - }); + }, directExecutor()); return future; } - + public Status readyStatus() { return readyStatus; } - + public Throwable loadError() { return loadError; } - + /** * Block indefinitely until the preload process has completed * @throws InterruptedException * @throws ExecutionException */ - public void waitForPreloader() - throws InterruptedException, + public void waitForPreloader() + throws InterruptedException, ExecutionException { loader.get(); } - + /** * Block up to the given period of time waiting for the preload * process to complete @@ -264,13 +263,13 @@ public void waitForPreloader() * @throws ExecutionException * @throws TimeoutException */ - public void waitForPreloader(long duration, TimeUnit unit) - throws InterruptedException, - ExecutionException, + public void waitForPreloader(long duration, TimeUnit unit) + throws InterruptedException, + ExecutionException, TimeoutException { loader.get(duration,unit); } - + private ListeningExecutorService initExecutor( Builder builder) { if (builder.executor != null) @@ -279,7 +278,7 @@ private ListeningExecutorService initExecutor( getExitingExecutorService( (ThreadPoolExecutor)newFixedThreadPool(1))); } - + /** * Resolve the given ID without waiting for the preloader to finish * @param id @@ -288,7 +287,7 @@ private ListeningExecutorService initExecutor( public FutureresolveNoWait(String id) { return resolveNoWait(Makers.type(id)); } - + /** * Resolve the given ID. Will wait for the preload process to complete * before returning @@ -298,9 +297,9 @@ private ListeningExecutorService initExecutor( public Futureresolve(String id) { return resolve(Makers.type(id)); } - + /** - * Resolve the given ID. Will wait the specified length of time for the + * Resolve the given ID. Will wait the specified length of time for the * preload process to complete before returning * @param id * @param duration @@ -310,7 +309,7 @@ private ListeningExecutorService initExecutor( public Futureresolve(String id, long duration, TimeUnit unit) { return resolve(Makers.type(id),duration,unit); } - + /** * Resolve the given ID without waiting for the preload process to complete * @param tv @@ -320,13 +319,14 @@ private ListeningExecutorService initExecutor( try { if (tv == null) return immediateCancelledFuture(); return tv.valueType() == ValueType.OBJECT || isToken(tv) ? - immediateFuture(tv) : + immediateFuture(tv) : executor.submit(strategy.resolverFor(tv)); } catch (Throwable t) { - throw propagate(t); + throwIfUnchecked(t); + throw new RuntimeException(t); } } - + /** * Resolve the given ID. Will block indefinitely until the preload process * is complete @@ -341,12 +341,13 @@ public Future resolve(TypeValue tv) { monitor.enterWhen(ready); return executor.submit(strategy.resolverFor(tv)); } catch (Throwable t) { - throw propagate(t); + throwIfUnchecked(t); + throw new RuntimeException(t); } finally { monitor.leave(); } } - + /** * Resolve the given ID. Will block for the given period of time until * the preload process is complete @@ -356,8 +357,8 @@ public Future resolve(TypeValue tv) { * @return Future<TypeValue> */ public Future resolve( - TypeValue tv, - long timeout, + TypeValue tv, + long timeout, TimeUnit unit) { try { if (tv == null) return immediateCancelledFuture(); @@ -367,7 +368,8 @@ public Future resolve( return executor.submit(strategy.resolverFor(tv)); } else throw new IllegalStateException(); } catch (Throwable t) { - throw propagate(t); + throwIfUnchecked(t); + throw new RuntimeException(t); } finally { monitor.leave(); } @@ -379,7 +381,7 @@ private boolean isToken(TypeValue value) { id.matches("[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~]+") : false; } - + public Future apply(TypeValue input) { return resolve(input); } From 9f7ca8ca3e0abca90d4964696e2ae9847f5ec43d Mon Sep 17 00:00:00 2001 From: sjsajj Date: Wed, 28 Apr 2021 15:12:57 -0400 Subject: [PATCH 2/2] remove repository changes --- pom.xml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pom.xml b/pom.xml index fdc13b7..afd1154 100644 --- a/pom.xml +++ b/pom.xml @@ -83,20 +83,4 @@ https://github.com/OpenSocial/activitystreams/issues - - - nexusMirror - https://ips-repo.corp.exlservice.com/repository/maven-central/ - - - - - third-party-snapshots - https://ips-repo.corp.exlservice.com/repository/thirdparty/ - - - third-party - https://ips-repo.corp.exlservice.com/repository/thirdparty/ - -