You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2011/11/17 23:47:11 UTC

svn commit: r1203401 - in /abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates: MultiContext.java Template.java

Author: jmsnell
Date: Thu Nov 17 22:47:10 2011
New Revision: 1203401

URL: http://svn.apache.org/viewvc?rev=1203401&view=rev
Log:
api improvements

Modified:
    abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java
    abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Template.java

Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java?rev=1203401&r1=1203400&r2=1203401&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MultiContext.java Thu Nov 17 22:47:10 2011
@@ -58,7 +58,9 @@ public final class MultiContext 
           (Context)object :
           object instanceof Map ?
             new MapContext((Map<String,Object>)object) :
-            new ObjectContext(object)
+            object instanceof Supplier ?
+              new ObjectContext(((Supplier<?>)object).get()) :
+              new ObjectContext(object)
       );
       return this;
     }

Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Template.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Template.java?rev=1203401&r1=1203400&r2=1203401&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Template.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/Template.java Thu Nov 17 22:47:10 2011
@@ -142,12 +142,20 @@ public final class Template 
               exp.evaluate(context));
       return pattern;
     }
+    
+    public String expand(Supplier<Context> context) {
+      if (context == null) return null;
+      return expand(context.get());
+    }
 
     /**
      * Expand the URI Template using the non-private fields and methods of the specified object to resolve the template
      * tokens
      */
     public String expand(Object object) {
+      if (object == null) return null;
+      if (object instanceof Supplier)
+        object = ((Supplier<?>)object).get();
         return expand(object, false);
     }
 
@@ -156,7 +164,10 @@ public final class Template 
      * tokens. If isiri is true, IRI escaping rules will be used.
      */
     public String expand(Object object, boolean isiri) {
-        return expand(asContext(object,isiri));
+      if (object == null) return null;
+      if (object instanceof Supplier)
+        object = ((Supplier<?>)object).get();
+      return expand(asContext(object,isiri));
     }
 
     private String replace(String pattern, Expression exp, String value) {
@@ -190,6 +201,12 @@ public final class Template 
         return pattern;
     }
 
+    public static String expand(String pattern, Supplier<Context> context) {
+      checkNotNull(pattern);
+      checkNotNull(context);
+      return expand(pattern,context.get());
+    }
+    
     public static String expand(String pattern, Context context) {
         checkNotNull(context);
         checkNotNull(pattern);