You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/05/03 01:05:29 UTC
svn commit: r652944 - in /incubator/shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/
main/java/org/apache/shindig/gadgets/spec/ main/java/org/apache/shindig/util/
test/java/org/apache/shindig/gadgets/spec/
Author: etnu
Date: Fri May 2 16:05:29 2008
New Revision: 652944
URL: http://svn.apache.org/viewvc?rev=652944&view=rev
Log:
Applied SHINDIG-219, with contributions from Nik Haldimann and Vincent Siveton.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java?rev=652944&r1=652943&r2=652944&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java Fri May 2 16:05:29 2008
@@ -25,6 +25,7 @@
import com.google.inject.Inject;
+import java.net.URI;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
@@ -100,8 +101,9 @@
*/
private MessageBundle getBundle(LocaleSpec localeSpec, GadgetContext context)
throws GadgetException {
- RemoteContentRequest request = RemoteContentRequest.getRequest(
- localeSpec.getMessages(), context.getIgnoreCache());
+ URI bundleUrl = localeSpec.getMessages();
+ RemoteContentRequest request
+ = RemoteContentRequest.getRequest(bundleUrl, context.getIgnoreCache());
RemoteContent response = messageBundleFetcher.fetch(request);
if (response.getHttpStatusCode() != RemoteContent.SC_OK) {
throw new GadgetException(
@@ -109,7 +111,8 @@
"Unable to retrieve message bundle xml. HTTP error " +
response.getHttpStatusCode());
}
- MessageBundle bundle = new MessageBundle(response.getResponseAsString());
+ MessageBundle bundle
+ = new MessageBundle(bundleUrl, response.getResponseAsString());
return bundle;
}
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java?rev=652944&r1=652943&r2=652944&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java Fri May 2 16:05:29 2008
@@ -149,7 +149,8 @@
try {
doc = XmlUtil.parse(xml);
} catch (XmlException e) {
- throw new SpecParserException(e);
+ throw new SpecParserException("Malformed XML in file " + url.toString()
+ + ": " + e.getMessage());
}
this.url = url;
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java?rev=652944&r1=652943&r2=652944&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java Fri May 2 16:05:29 2008
@@ -23,6 +23,7 @@
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
+import java.net.URI;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -60,15 +61,15 @@
* @param xml
* @throws SpecParserException
*/
- public MessageBundle(String xml) throws SpecParserException {
+ public MessageBundle(URI url, String xml) throws SpecParserException {
Element doc;
try {
doc = XmlUtil.parse(xml);
} catch (XmlException e) {
- throw new SpecParserException(e);
+ throw new SpecParserException("Malformed XML in file " + url.toString()
+ + ": " + e.getMessage());
}
-
NodeList nodes = doc.getElementsByTagName("msg");
Map<String, String> messages
= new HashMap<String, String>(nodes.getLength(), 1);
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java?rev=652944&r1=652943&r2=652944&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java Fri May 2 16:05:29 2008
@@ -23,6 +23,7 @@
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
import java.io.IOException;
import java.io.StringReader;
@@ -127,6 +128,8 @@
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
InputSource is = new InputSource(new StringReader(xml.trim()));
return factory.newDocumentBuilder().parse(is).getDocumentElement();
+ } catch (SAXParseException e) {
+ throw new XmlException(e.getMessage()+" At: ("+e.getLineNumber()+","+e.getColumnNumber()+")", e);
} catch (SAXException e) {
throw new XmlException(e);
} catch (ParserConfigurationException e) {
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java?rev=652944&r1=652943&r2=652944&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/GadgetSpecTest.java Fri May 2 16:05:29 2008
@@ -19,6 +19,7 @@
package org.apache.shindig.gadgets.spec;
+import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.Substitutions;
import org.apache.shindig.gadgets.Substitutions.Type;
@@ -80,6 +81,18 @@
}
}
+ public void testMalformedXml() throws Exception {
+ String xml = "<Module><ModulePrefs/>";
+ try {
+ GadgetSpec spec = new GadgetSpec(SPEC_URL, xml);
+ fail("No exception thrown on malformed XML.");
+ } catch (SpecParserException e) {
+ // OK
+ assertEquals(GadgetException.Code.MALFORMED_XML_DOCUMENT, e.getCode());
+ assertTrue(e.getMessage().contains(SPEC_URL.toString()));
+ }
+ }
+
public void testSubstitutions() throws Exception {
Substitutions substituter = new Substitutions();
String title = "Hello, World!";
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java?rev=652944&r1=652943&r2=652944&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java Fri May 2 16:05:29 2008
@@ -21,10 +21,14 @@
import junit.framework.TestCase;
+import org.apache.shindig.gadgets.GadgetException;
+
+import java.net.URI;
import java.util.HashMap;
import java.util.Map;
public class MessageBundleTest extends TestCase {
+ private static final URI BUNDLE_URL = URI.create("http://example.org/m.xml");
public void testNormalMessageBundle() throws Exception {
Map<String, String> messages = new HashMap<String, String>();
messages.put("hello", "world");
@@ -36,17 +40,29 @@
"</msg>";
}
xml += "</messagebundle>";
- MessageBundle bundle = new MessageBundle(xml);
+ MessageBundle bundle = new MessageBundle(BUNDLE_URL, xml);
assertEquals(messages, bundle.getMessages());
}
public void testMissingNames() {
String xml = "<messagebundle><msg>foo</msg></messagebundle>";
try {
- MessageBundle bundle = new MessageBundle(xml);
+ MessageBundle bundle = new MessageBundle(BUNDLE_URL, xml);
fail("No exception thrown when a msg has no name.");
} catch (SpecParserException e) {
// OK.
}
}
+
+ public void testMalformedXml() {
+ String xml = "</messagebundle>";
+ try {
+ MessageBundle bundle = new MessageBundle(BUNDLE_URL, xml);
+ fail("No exception thrown on malformed XML.");
+ } catch (SpecParserException e) {
+ // OK
+ assertEquals(GadgetException.Code.MALFORMED_XML_DOCUMENT, e.getCode());
+ assertTrue(e.getMessage().contains(BUNDLE_URL.toString()));
+ }
+ }
}