Author: scottbw
Date: Thu Apr 28 14:21:48 2011
New Revision: 1097475
URL: http://svn.apache.org/viewvc?rev=1097475&view=rev
Log:
Added support for relative URLs for widget update locations
Modified:
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java
Modified:
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java?rev=1097475&r1=1097474&r2=1097475&view=diff
==============================================================================
---
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java
(original)
+++
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java
Thu Apr 28 14:21:48 2011
@@ -36,6 +36,7 @@ public class UpdateDescriptionDocument{
private URL updateSource;
private String versionTag;
private ArrayList<Details> details;
+ private URL baseUrl;
/**
* Get the details of the update, typically a short description of any
new features.
@@ -85,10 +86,10 @@ public class UpdateDescriptionDocument{
*/
public UpdateDescriptionDocument(String href) throws
InvalidUDDException{
try {
- URL url = new URL(href);
+ baseUrl = new URL(href);
HttpClient client = new HttpClient();
- GetMethod method = new GetMethod(url.toString());
+ GetMethod method = new GetMethod(baseUrl.toString());
method.setFollowRedirects(true);
client.executeMethod(method);
String type =
method.getResponseHeader("Content-Type").getValue();
@@ -127,10 +128,18 @@ public class UpdateDescriptionDocument{
if (root.getAttribute("version") == null) throw new
InvalidUDDException("no version attribute");
if (root.getAttribute("src") == null) throw new
InvalidUDDException("no src attribute");
versionTag = root.getAttributeValue("version");
+
+ // Determine the update source URL.
try {
updateSource = new URL(root.getAttributeValue("src"));
} catch (MalformedURLException e) {
- throw new InvalidUDDException("src attribute is not a
valid URL");
+ // If the URL is relative, try to make it absolute by
using the URL where the UDD is obtained from as the base
+ try {
+
System.out.println(root.getAttributeValue("src"));
+ updateSource = new URL(baseUrl,
root.getAttributeValue("src"));
+ } catch (MalformedURLException e1) {
+ throw new InvalidUDDException("src attribute is
not a valid URL");
+ }
}
List<?> detailsElements = root.getChildren("details",
Namespace.getNamespace(IW3CXMLConfiguration.MANIFEST_NAMESPACE));
this.details = new ArrayList<Details>();