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