You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by lr...@apache.org on 2009/04/23 19:14:57 UTC

svn commit: r767984 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java

Author: lryan
Date: Thu Apr 23 17:14:57 2009
New Revision: 767984

URL: http://svn.apache.org/viewvc?rev=767984&view=rev
Log:
Fix coercion of JSONArray to Iterable for arrays of non JSONObject in template processing.

Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java?rev=767984&r1=767983&r2=767984&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java Thu Apr 23 17:14:57 2009
@@ -458,7 +458,7 @@
               }
               
               try {
-                return array.getJSONObject(i++);
+                return array.get(i++);
               } catch (Exception e) {
                 throw new ELException(e);
               }

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java?rev=767984&r1=767983&r2=767984&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java Thu Apr 23 17:14:57 2009
@@ -30,6 +30,7 @@
 import org.apache.shindig.gadgets.parse.nekohtml.NekoSerializer;
 import org.apache.shindig.gadgets.parse.nekohtml.SocialMarkupHtmlParser;
 import org.json.JSONObject;
+import org.json.JSONArray;
 import org.junit.Before;
 import org.junit.Test;
 import org.w3c.dom.Document;
@@ -59,7 +60,7 @@
 
   private TemplateContext context;
   private DefaultTemplateProcessor processor;
-  private Map<String, JSONObject> variables;
+  private Map<String, Object> variables;
   private ELResolver resolver;
   private TagRegistry registry;
 
@@ -79,10 +80,11 @@
     parser = new SocialMarkupHtmlParser(new ParseModule.DOMImplementationProvider().get());    
     context = new TemplateContext(new Gadget(), variables);
     
-    addVariable("foo", new JSONObject("{ title: 'bar' }"));
-    addVariable("user", new JSONObject("{ id: '101', name: { first: 'John', last: 'Doe' }}"));
-    addVariable("toys", new JSONObject("{ list: [{name: 'Ball'}, {name: 'Car'}]}"));
-    addVariable("xss", new JSONObject("{ script: '<script>alert();</script>'," +
+    variables.put("foo", new JSONObject("{ title: 'bar' }"));
+    variables.put("user", new JSONObject("{ id: '101', name: { first: 'John', last: 'Doe' }}"));
+    variables.put("toys", new JSONObject("{ list: [{name: 'Ball'}, {name: 'Car'}]}"));
+    variables.put("countries", new JSONArray("['Ireland','France']"));
+    variables.put("xss", new JSONObject("{ script: '<script>alert();</script>'," +
     		"quote:'\"><script>alert();</script>'}"));
   }
 
@@ -163,6 +165,12 @@
     String output = executeTemplate("<span repeat=\"${toys}\">${name}</span>");
     assertEquals("<span>Ball</span><span>Car</span>", output);
   }
+
+  @Test
+  public void testRepeatScalar() throws Exception {
+    String output = executeTemplate("<span repeat=\"${countries}\">${Cur}</span>");
+    assertEquals("<span>Ireland</span><span>France</span>", output);
+  }
   
   @Test
   public void testCurAttribute() throws Exception {
@@ -220,10 +228,6 @@
     return sb.toString();
   }
   
-  private void addVariable(String key, JSONObject value) {
-    variables.put(key, value);
-  }
-  
   /**
    * A dummy custom tag.
    * Expects a @text attribute equal to "bar", and a @data attribute that