Author: zhoresh
Date: Thu Feb 24 19:14:55 2011
New Revision: 1074260
URL: http://svn.apache.org/viewvc?rev=1074260&view=rev
Log:
Detect duplicate User prefs in gadget spec |
http://codereview.appspot.com/4224042/
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java?rev=1074260&r1=1074259&r2=1074260&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
Thu Feb 24 19:14:55 2011
@@ -65,7 +65,7 @@ public class GadgetSpec {
NodeList children = doc.getChildNodes();
ModulePrefs modulePrefs = null;
- ImmutableMap.Builder<String,UserPref> prefsBuilder =
ImmutableMap.builder();
+ Map<String,UserPref> prefsBuilder = Maps.newHashMap();
Map<String, List<Element>> views = Maps.newHashMap();
for (int i = 0, j = children.getLength(); i < j; ++i) {
Node child = children.item(i);
@@ -83,6 +83,9 @@ public class GadgetSpec {
}
if ("UserPref".equals(name)) {
UserPref pref = new UserPref(element);
+ if (prefsBuilder.containsKey(pref.getName())) {
+ throw new SpecParserException("Duplicate value for user pref " +
pref.getName());
+ }
prefsBuilder.put(pref.getName(), pref);
}
if ("Content".equals(name)) {
@@ -114,7 +117,7 @@ public class GadgetSpec {
}
this.views = ImmutableMap.copyOf(tmpViews);
}
- this.userPrefs = prefsBuilder.build();
+ this.userPrefs = ImmutableMap.copyOf(prefsBuilder);
}
/**
@@ -236,7 +239,7 @@ public class GadgetSpec {
return spec;
}
-
+
/**
* Returns a copy of the spec with all type=url views removed.
*/
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java?rev=1074260&r1=1074259&r2=1074260&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java
Thu Feb 24 19:14:55 2011
@@ -93,6 +93,17 @@ public class GadgetSpecTest extends Asse
new GadgetSpec(SPEC_URL, xml);
}
+ @Test(expected=SpecParserException.class)
+ public void testEnforceUserPrefNoDuplicate() throws Exception {
+ String xml = "<Module>" +
+ "<ModulePrefs title=\"hello\"/>" +
+ "<UserPref name=\"foo\" datatype=\"string\"/>" +
+ "<UserPref name=\"foo\" datatype=\"int\"/>" +
+ "<Content type=\"html\"/>" +
+ "</Module>";
+ new GadgetSpec(SPEC_URL, xml);
+ }
+
@Test
public void testSubstitutions() throws Exception {
Substitutions substituter = new Substitutions();