Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/server/ServerInfoServiceImpl.java @ 7825:b9decb8bfb21 minfo-opt
Added the new multiattribute data type.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Thu, 20 Mar 2014 13:36:20 +0100 |
parents | b0b0ba6e7bb0 |
children | 238fc722f87a |
rev | line source |
---|---|
6475
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
1 package org.dive4elements.river.client.server; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
2 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
3 import java.util.HashMap; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
4 import java.util.Map; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
5 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
6 import javax.xml.xpath.XPathConstants; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
7 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
8 import org.apache.log4j.Logger; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
9 import org.dive4elements.artifacts.common.ArtifactNamespaceContext; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
10 import org.dive4elements.artifacts.common.utils.XMLUtils; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
11 import org.dive4elements.artifacts.httpclient.http.HttpClient; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
12 import org.dive4elements.artifacts.httpclient.http.HttpClientImpl; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
13 import org.dive4elements.river.client.client.services.ServerInfoService; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
14 import org.w3c.dom.Document; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
15 import org.w3c.dom.Element; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
16 import org.w3c.dom.NodeList; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
17 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
18 public class ServerInfoServiceImpl extends RemoteServiceServlet implements |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
19 ServerInfoService { |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
20 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
21 // This works only because currently there is only one info transmitted |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
22 private static final String XPATH_INFO = "/art:server/art:info"; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
23 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
24 private final Logger logger = Logger.getLogger(ServerInfoServiceImpl.class); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
25 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
26 @Override |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
27 public Map<String, String> getConfig(String locale) { |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
28 Map<String, String> infoMap = new HashMap<String, String>(); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
29 String url = getServletContext().getInitParameter("server-url"); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
30 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
31 Document doc = XMLUtils.newDocument(); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
32 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
33 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
34 doc, |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
35 ArtifactNamespaceContext.NAMESPACE_URI, |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
36 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
37 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
38 doc.appendChild(ec.create("action")); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
39 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
40 HttpClient client = new HttpClientImpl(url, locale); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
41 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
42 try { |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
43 Document res = client.callService(url, "server-info", doc); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
44 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
45 NodeList info = (NodeList) XMLUtils.xpath(res, |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
46 XPATH_INFO, |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
47 XPathConstants.NODESET, |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
48 ArtifactNamespaceContext.INSTANCE); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
49 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
50 for (int n = 0; n < info.getLength(); n++) { |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
51 Element el = (Element)info.item(n); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
52 String key = el.getAttributeNS( |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
53 ArtifactNamespaceContext.NAMESPACE_URI, "key"); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
54 String val = el.getAttributeNS( |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
55 ArtifactNamespaceContext.NAMESPACE_URI, "value"); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
56 infoMap.put(key, val); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
57 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
58 logger.debug("ServerInfoServiceImpl: " + key + "=" + val); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
59 } |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
60 } |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
61 catch (Exception ex) { |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
62 logger.error(ex, ex); |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
63 } |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
64 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
65 return infoMap; |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
66 } |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
67 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
68 |
b0b0ba6e7bb0
Add client side servlets and service stubs for ServerInfoService.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
69 } |