1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.dom.svg.utils;
19
20 import org.vectomatic.dom.svg.impl.SVGParserImpl;
21 import org.vectomatic.dom.svg.utils.DOMHelper;
22
23 import com.google.gwt.core.client.GWT;
24 import com.google.gwt.dom.client.Element;
25 import com.google.gwt.http.client.Request;
26 import com.google.gwt.http.client.RequestBuilder;
27 import com.google.gwt.http.client.RequestCallback;
28 import com.google.gwt.http.client.RequestException;
29 import com.google.gwt.http.client.Response;
30
31
32
33
34
35 public class HttpRequestXmlLoader implements AsyncXmlLoader {
36
37 @Override
38 public void loadResource(final String resourceUrl, final AsyncXmlLoaderCallback callback) {
39 String currentResourceUrl = resourceUrl + ((resourceUrl.indexOf("?") == -1) ? ("?ts=" + System.currentTimeMillis()) : ("&ts=" + + System.currentTimeMillis()));
40 RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, currentResourceUrl);
41 requestBuilder.setCallback(new RequestCallback() {
42 public void onError(Request request, Throwable exception) {
43 callback.onError(resourceUrl, exception);
44 }
45
46 private void onSuccess(Request request, Response response) {
47 SVGParserImpl impl = GWT.create(SVGParserImpl.class);
48 Element root = impl.parse(response.getText());
49 callback.onSuccess(resourceUrl, root);
50 }
51
52 public void onResponseReceived(Request request, Response response) {
53 if (response.getStatusCode() == Response.SC_OK) {
54 onSuccess(request, response);
55 } else {
56 onError(request, null);
57 }
58 }
59 });
60 try {
61 requestBuilder.send();
62 } catch (RequestException e) {
63 GWT.log("Cannot fetch " + resourceUrl, e);
64 }
65 }
66 }