Author: etnu
Date: Wed Jan 30 15:35:06 2008
New Revision: 616957
URL: http://svn.apache.org/viewvc?rev=616957&view=rev
Log:
Added enum support to GadgetSpec, as required by the canonical gadget spec XSD.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpec.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpecParser.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetSpecParserTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpec.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpec.java?rev=616957&r1=616956&r2=616957&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpec.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpec.java
Wed Jan 30 15:35:06 2008
@@ -68,6 +68,8 @@
}
public DataType getDataType();
+
+ public Map<String, String> getEnumValues();
}
public List<UserPref> getUserPrefs();
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpecParser.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpecParser.java?rev=616957&r1=616956&r2=616957&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpecParser.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetSpecParser.java
Wed Jan 30 15:35:06 2008
@@ -24,8 +24,8 @@
import java.io.IOException;
import java.net.MalformedURLException;
-import java.net.URISyntaxException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
@@ -242,6 +242,23 @@
up.defaultValue = defaultValue.getNodeValue();
}
+ // Check for enum types.
+ up.enumValues = new HashMap<String, String>();
+ NodeList children = pref.getChildNodes();
+ for (int i = 0, j = children.getLength(); i < j; ++i) {
+ Node child = children.item(i);
+ if (child.getNodeName().equals("EnumValue")) {
+ NamedNodeMap childAttrs = child.getAttributes();
+
+ // Must have both name and value.
+ Node value = childAttrs.getNamedItem("value");
+ Node displayValue = childAttrs.getNamedItem("display_value");
+ if (value != null && displayValue != null) {
+ up.enumValues.put(value.getTextContent(),
+ displayValue.getTextContent());
+ }
+ }
+ }
return up;
}
@@ -474,6 +491,7 @@
private String defaultValue;
private boolean required;
private DataType dataType;
+ private Map<String, String> enumValues;
private static DataType parse(String str) {
for (DataType dt : UserPref.DataType.values()) {
@@ -502,6 +520,10 @@
public DataType getDataType() {
return dataType;
+ }
+
+ public Map<String, String> getEnumValues() {
+ return enumValues;
}
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetSpecParserTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetSpecParserTest.java?rev=616957&r1=616956&r2=616957&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetSpecParserTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetSpecParserTest.java
Wed Jan 30 15:35:06 2008
@@ -16,6 +16,8 @@
import junit.framework.TestCase;
import java.net.URI;
+import java.util.List;
+import java.util.Map;
public class GadgetSpecParserTest extends TestCase {
@@ -48,5 +50,35 @@
assertEquals("Hello!", spec.getContentData());
assertEquals("Hello, world!", spec.getTitle());
+ }
+
+ public void testEnumParsing() throws Exception {
+ BasicGadgetId id = new BasicGadgetId();
+ id.uri = new URI("http://example.org/text.xml");
+ id.moduleId = 1;
+ byte[] xml = ("<?xml version=\"1.0\"?>" +
+ "<Module>" +
+ "<ModulePrefs title=\"Test Enum\">" +
+ "<UserPref name=\"test\" datatype=\"enum\">" +
+ "<EnumValue value=\"0\" display_value=\"Zero\"/>" +
+ "<EnumValue value=\"1\" display_value=\"One\"/>" +
+ "</UserPref>" +
+ "</ModulePrefs>" +
+ "<Content type=\"html\">Hello!</Content>" +
+ "</Module>").getBytes();
+ GadgetSpec spec = parser.parse(id, xml);
+
+ List<GadgetSpec.UserPref> prefs = spec.getUserPrefs();
+
+ assertEquals(1, prefs.size());
+ GadgetSpec.UserPref pref = prefs.get(0);
+ assertEquals("test", pref.getName());
+
+ Map<String, String> enumValues = pref.getEnumValues();
+
+ assertEquals(2, enumValues.size());
+
+ assertEquals("Zero", enumValues.get("0"));
+ assertEquals("One", enumValues.get("1"));
}
}