]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/server/client/SlcServerHttpClient.java
7a77175cf4a6de3a5e236c7f3c3acc8af14070df
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / server / client / SlcServerHttpClient.java
1 package org.argeo.slc.server.client;
2
3 import java.io.InputStream;
4 import java.net.HttpURLConnection;
5 import java.net.URL;
6 import java.util.Map;
7
8 import javax.xml.transform.stream.StreamSource;
9
10 import org.apache.commons.io.IOUtils;
11 import org.argeo.slc.SlcException;
12 import org.springframework.oxm.Unmarshaller;
13
14 public class SlcServerHttpClient {
15 private Unmarshaller unmarshaller;
16 private String baseUrl = "http://localhost:7070/org.argeo.slc.webapp/";
17
18 @SuppressWarnings(value = { "unchecked" })
19 public <T> T callService(String path, Map<String, String> parameters) {
20
21 InputStream in = null;
22 try {
23 URL url = new URL(baseUrl + path);
24 HttpURLConnection connection = (HttpURLConnection) url
25 .openConnection();
26 if (parameters != null) {
27 for (String key : parameters.keySet()) {
28 connection.addRequestProperty(key, parameters.get(key));
29 }
30 }
31
32 connection.connect();
33
34 in = connection.getInputStream();
35 StreamSource source = new StreamSource(in);
36 Object obj = unmarshaller.unmarshal(source);
37 return (T) obj;
38 } catch (Exception e) {
39 throw new SlcException("Cannot call service " + path + " on "
40 + baseUrl, e);
41 } finally {
42 IOUtils.closeQuietly(in);
43 }
44 }
45
46 public void setUnmarshaller(Unmarshaller unmarshaller) {
47 this.unmarshaller = unmarshaller;
48 }
49
50 public void setBaseUrl(String baseUrl) {
51 this.baseUrl = baseUrl;
52 }
53
54 }