Mercurial > dive4elements > http-client
annotate src/main/java/org/dive4elements/artifacts/httpclient/http/HttpClientImpl.java @ 94:31dc80c48936 3.0.16
issue1494: If encoding is set in collectionOut, use it.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 25 Sep 2013 10:40:39 +0200 |
parents | 30b7ca3951c7 |
children | 4ffbc9f79905 |
rev | line source |
---|---|
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1 /* |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
2 * Copyright (c) 2010 by Intevation GmbH |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
3 * |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
4 * This program is free software under the LGPL (>=v2.1) |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
5 * Read the file LGPL.txt coming with the software for details |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
6 * or visit http://www.gnu.org/licenses/ if it does not exist. |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
7 */ |
72
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
8 package org.dive4elements.artifacts.httpclient.http; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
9 |
93
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
10 import java.io.BufferedReader; |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
11 import java.io.BufferedWriter; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 import java.io.InputStream; |
93
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
13 import java.io.InputStreamReader; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import java.io.IOException; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 import java.io.OutputStream; |
90
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
16 import java.io.OutputStreamWriter; |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
17 |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
18 import java.nio.charset.Charset; |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
19 |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
20 import java.util.ArrayList; |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
21 import java.util.List; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 import org.apache.log4j.Logger; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 import org.restlet.Client; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 import org.restlet.Request; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 import org.restlet.Response; |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
28 import org.restlet.data.ClientInfo; |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
29 import org.restlet.data.Language; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 import org.restlet.data.MediaType; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 import org.restlet.data.Method; |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
32 import org.restlet.data.Preference; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 import org.restlet.data.Protocol; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 import org.restlet.data.Status; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 import org.restlet.ext.xml.DomRepresentation; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 import org.restlet.representation.Representation; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 import org.w3c.dom.Document; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
39 |
72
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
40 import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
41 import org.dive4elements.artifacts.httpclient.http.response.DocumentResponseHandler; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
42 import org.dive4elements.artifacts.httpclient.http.response.ResponseHandler; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
43 import org.dive4elements.artifacts.httpclient.http.response.StreamResponseHandler; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
44 import org.dive4elements.artifacts.httpclient.objects.Artifact; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
45 import org.dive4elements.artifacts.httpclient.objects.ArtifactFactory; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
46 import org.dive4elements.artifacts.httpclient.utils.ArtifactProtocolUtils; |
133281653904
Renamed internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
71
diff
changeset
|
47 import org.dive4elements.artifacts.httpclient.utils.ArtifactCreator; |
2
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
48 |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 /** |
90
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
51 * Client to artifact-server. |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 */ |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 public class HttpClientImpl implements HttpClient { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 private static final Logger logger = Logger.getLogger(HttpClient.class); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 |
4
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
58 /** The URL part of the resource to list the existing users of the server.*/ |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
59 public static final String PATH_LIST_USERS = "/list-users"; |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
60 |
7
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
61 /** The URL part of the resource to list the Collections owned by a specific |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
62 * user.*/ |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
63 public static final String PATH_USER_COLLECTIONS = "/list-collections"; |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
64 |
34
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
65 /** The URL part og the resource to create a new user on the server.*/ |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
66 public static final String PATH_CREATE_USER = "/create-user"; |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
67 |
37
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
68 /** The URL part og the resource to find an existing user on the server.*/ |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
69 public static final String PATH_FIND_USER = "/find-user"; |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
70 |
5
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
71 /** The URL part of the resource to call a specific service.*/ |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
72 public static final String PATH_SERVICE = "/service"; |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
73 |
3
19a617578b88
Added a new method to the HttpClient that triggers the creation of a new artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2
diff
changeset
|
74 /** The URL path of the resource to create new artifact collections.*/ |
19a617578b88
Added a new method to the HttpClient that triggers the creation of a new artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2
diff
changeset
|
75 public static final String PATH_CREATE_COLLECTION = "/create-collection"; |
19a617578b88
Added a new method to the HttpClient that triggers the creation of a new artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2
diff
changeset
|
76 |
6
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
77 /** The URL path of the resource to work with an artifact collections.*/ |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
78 public static final String PATH_ACTION_COLLECTION = "/collection"; |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
79 |
9
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
80 /** The URL path of the resource to work with an artifact collections.*/ |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
81 public static final String PATH_OUT_COLLECTION = "/collection"; |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
82 |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
83 private String serverUrl; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
84 |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
85 private String localeString; |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
86 |
90
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
87 /** |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
88 * The Charset used for encoding the collectionOut output. |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
89 * If not set, the system/java default will be used (UTF-8). |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
90 */ |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
91 private Charset charset; |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
92 |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
93 private static final ThreadLocal<Client> CLIENT = |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
94 new ThreadLocal<Client>() { |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
95 @Override |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
96 protected Client initialValue() { |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
97 logger.debug("create new HTTP client"); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
98 return new Client(Protocol.HTTP); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
99 } |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
100 }; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 public HttpClientImpl(String serverUrl) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 this.serverUrl = serverUrl; |
92
fcbfc6c597b1
Renamed setEncoding to setOutEncoding.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
90
diff
changeset
|
104 setOutEncoding(null); |
90
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
105 } |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
106 |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
107 |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
108 /** |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
109 * Sets the encoding. |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
110 * |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
111 * Currently the encoding is only |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
112 * respected in the collectionOut-method! |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
113 * |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
114 * It was implemented to allow csv export to be in another than the |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
115 * sensible default (UTF-8) and allow easier integration |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
116 * e.g. in proprietary products. |
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
117 */ |
92
fcbfc6c597b1
Renamed setEncoding to setOutEncoding.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
90
diff
changeset
|
118 public void setOutEncoding(Charset charset) { |
90
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
119 this.charset = charset; |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
120 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
123 /** |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
124 * This constructor might be used to modify the request's locale manually. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
125 * E.g. the localization should not be based on the configured browser |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
126 * locale, but site specific configuration - than you are able to set the |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
127 * locale in this constructor. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
128 * |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
129 * @param serverUrl The url that is used for the request. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
130 * @param localeString The string representation of the desired locale. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
131 */ |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
132 public HttpClientImpl(String serverUrl, String localeString) { |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
133 this(serverUrl); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
134 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
135 this.localeString = localeString; |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
136 } |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
137 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
138 |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
139 @Override |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 public ArtifactFactory[] getArtifactFactories() |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
141 throws ConnectionException |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
142 { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
143 ResponseHandler handler = new DocumentResponseHandler(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
145 try { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 String url = serverUrl + "/factories"; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
147 Document result = (Document) handler.handle(doGet(url)); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 return ArtifactProtocolUtils.extractArtifactFactories(result); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
150 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
151 catch (IOException ioe) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
152 throw new ConnectionException( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
153 "Connection to server failed. No Factories recieved."); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
154 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
155 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
156 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
157 |
2
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
158 /** |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
159 * This method creates a new artifact in the artifact server and returns |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
160 * this artifact. The new artifact is created using <i>creator</i>. If no |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
161 * {@link ArtifactCreator} is given (null), an {@link Artifact} is returned. |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
162 * |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
163 * @param doc The CREATE document. |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
164 * @param creator The {@link ArtifactCreator} that is used to extract the |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
165 * new artifact from response document of the server. |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
166 * |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
167 * @return the new artifact. |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
168 */ |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
169 @Override |
2
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
170 public Object create(Document doc, ArtifactCreator creator) |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
171 throws ConnectionException |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
172 { |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
173 ResponseHandler handler = new DocumentResponseHandler(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
174 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
175 try { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
176 String url = serverUrl + "/create"; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
177 Document result = (Document) handler.handle(doPost(url, doc)); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
178 |
2
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
179 return creator == null |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
180 ? ArtifactProtocolUtils.extractArtifact(result) |
2fdfa20cfa63
Added an interface that is used to create instances of artifacts depending on the framework that includes this lib. The create() method of the HttpClient makes use of this interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1
diff
changeset
|
181 : creator.create(result); |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
182 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
183 catch (IOException ioe) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
184 throw new ConnectionException( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
185 "Connection to server failed. No Artifact created."); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
187 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
188 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
189 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
190 @Override |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
191 public Object describe( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
192 Artifact artifact, |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
193 Document doc, |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
194 ResponseHandler handler) |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 throws ConnectionException |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
196 { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
197 try { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
198 String url = serverUrl + "/artifact/" + artifact.getUuid(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
199 return handler.handle(doPost(url, doc)); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
200 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 catch (IOException ioe) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 throw new ConnectionException( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 "Connection to server failed: " + ioe.getMessage()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 @Override |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
209 public Object feed(Artifact artifact, Document doc, ResponseHandler handler) |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
210 throws ConnectionException |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
211 { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
212 try { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
213 String url = serverUrl + "/artifact/" + artifact.getUuid(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
214 Document result = (Document) handler.handle(doPost(url, doc)); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
215 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
216 return result; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
217 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
218 catch (IOException ioe) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
219 throw new ConnectionException( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
220 "Connection to server failed: " + ioe.getMessage()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
221 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
222 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
223 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
224 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
225 @Override |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
226 public Object advance(Artifact artifact, Document doc, ResponseHandler handler) |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
227 throws ConnectionException |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
228 { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
229 try { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
230 String url = serverUrl + "/artifact/" + artifact.getUuid(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
231 Document result = (Document) handler.handle(doPost(url, doc)); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
232 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
233 return result; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
234 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
235 catch (IOException ioe) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
236 throw new ConnectionException( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
237 "Connection to server failed: " + ioe.getMessage()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
238 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
239 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
240 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
241 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
242 @Override |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
243 public void out( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
244 Artifact artifact, |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
245 Document doc, |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
246 String target, |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 OutputStream out) |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 throws ConnectionException |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
249 { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
250 try { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
251 String url = |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
252 serverUrl |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 + "/artifact/" |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
254 + artifact.getUuid() |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
255 + "/" + target; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
257 ResponseHandler handler = new StreamResponseHandler(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
258 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
259 InputStream stream = (InputStream) handler.handle(doPost(url, doc)); |
17
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
260 try { |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
261 byte[] b = new byte[4096]; |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
262 int i; |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
263 while ((i = stream.read(b)) >= 0) { |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
264 out.write(b, 0, i); |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
265 } |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
266 } |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
267 finally { |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
268 stream.close(); |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
269 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
270 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
271 catch (IOException ioe) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
272 throw new ConnectionException( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
273 "Connection to server failed: " + ioe.getMessage()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
274 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
275 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
276 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
277 |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
278 //============================== |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
279 // HTTP specific methods |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
280 //============================== |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
281 |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
282 private Response doPost(String url, Document body) throws IOException { |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
283 if (logger.isDebugEnabled()) { |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
284 logger.debug("Start HTTP-POST request to: " + url); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
285 } |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
286 |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
287 Client client = getClient(); |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
288 Request request = prepareRequest(Method.POST, url); |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
289 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
290 Representation representation = new DomRepresentation( |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
291 MediaType.APPLICATION_XML, |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
292 body); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
293 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
294 request.setEntity(representation); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
295 Response response = client.handle(request); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
296 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
297 Status status = response.getStatus(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
298 if (status.getCode() != 200) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
299 logger.error("Response status: " + status.getCode()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
300 throw new IOException(status.getDescription()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
301 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
302 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
303 return response; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
304 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
305 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
306 |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
307 private static Client getClient() { |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
308 return CLIENT.get(); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
309 } |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
310 |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
311 |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
312 private Response doGet(String url) throws IOException { |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
313 if (logger.isDebugEnabled()) { |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
314 logger.debug("Start HTTP-POST request to: "+ url); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
315 } |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
316 |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
317 Client client = getClient(); |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
318 Request request = prepareRequest(Method.GET, url); |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
319 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
320 Response response = client.handle(request); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
321 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
322 Status status = response.getStatus(); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
323 if (status.getCode() != 200) { |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
324 logger.error("Response status: " + status.getCode()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
325 throw new IOException(status.getDescription()); |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
326 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
327 |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
328 return response; |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
329 } |
4
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
330 |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
331 |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
332 /** |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
333 * This method prepares the request object. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
334 * |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
335 * @param method The HTTP method (GET,POST). |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
336 * @param url The URL used for the request. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
337 * |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
338 * @return the request object. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
339 */ |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
340 private Request prepareRequest(Method method, String url) { |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
341 Request request = new Request(method, url); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
342 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
343 ClientInfo info = request.getClientInfo(); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
344 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
345 setLocale(info); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
346 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
347 request.setClientInfo(info); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
348 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
349 return request; |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
350 } |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
351 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
352 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
353 /** |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
354 * This method is called to set the request's locale. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
355 * |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
356 * @param info The ClientInfo that is used to provide request information. |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
357 */ |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
358 private void setLocale(ClientInfo info) { |
11
ea8b7e244e61
Bugfix: repaired a condition that prevented setting the locale of the request object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
10
diff
changeset
|
359 if (localeString == null) { |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
360 return; |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
361 } |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
362 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
363 List<Preference<Language>> accepted = |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
364 new ArrayList<Preference<Language>>(); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
365 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
366 Language lang = Language.valueOf(localeString); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
367 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
368 if (lang != null) { |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
369 if (logger.isDebugEnabled()) { |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
370 logger.debug( |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
371 "Set locale of the request object: " + lang.toString()); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
372 } |
11
ea8b7e244e61
Bugfix: repaired a condition that prevented setting the locale of the request object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
10
diff
changeset
|
373 |
10
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
374 Preference<Language> pref = new Preference<Language>(); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
375 pref.setMetadata(lang); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
376 accepted.add(pref); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
377 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
378 info.setAcceptedLanguages(accepted); |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
379 } |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
380 } |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
381 |
e79283dad6f2
Added the option to set the request's locale manually.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
9
diff
changeset
|
382 |
6
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
383 //============================== |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
384 // Collection API |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
385 //============================== |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
386 |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
387 /** |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
388 * This method triggers the artifact servers resource to create a new |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
389 * artifact collection. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
390 * |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
391 * @param create The CREATE document for the collection. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
392 * @param ownerId The uuid of the creator. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
393 * @param handler The handler that is used to create the result object. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
394 * |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
395 * @return a result object created by <i>handler</i>. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
396 */ |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
397 public Object createCollection( |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
398 Document create, |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
399 String ownerId, |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
400 ResponseHandler handler) |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
401 throws ConnectionException |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
402 { |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
403 String url = serverUrl + PATH_CREATE_COLLECTION + "/" + ownerId; |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
404 |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
405 try { |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
406 return handler.handle(doPost(url, create)); |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
407 } |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
408 catch (IOException ioe) { |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
409 throw new ConnectionException(ioe.getMessage(), ioe); |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
410 } |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
411 } |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
412 |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
413 |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
414 /** |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
415 * This method might be used to trigger a collection specific action. The |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
416 * action that is executed depends on the document <i>actionDoc</i>. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
417 * |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
418 * @param actionDoc The document that describes the action to be executed. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
419 * @param uuid The uuid of the collection. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
420 * @param handler The handler that is used to create the result object. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
421 * |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
422 * @return a result object created by <i>handler</i>. |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
423 */ |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
424 public Object doCollectionAction( |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
425 Document actionDoc, |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
426 String uuid, |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
427 ResponseHandler handler) |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
428 throws ConnectionException |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
429 { |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
430 String url = serverUrl + PATH_ACTION_COLLECTION + "/" + uuid; |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
431 |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
432 try { |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
433 return handler.handle(doPost(url, actionDoc)); |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
434 } |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
435 catch (IOException ioe) { |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
436 throw new ConnectionException(ioe.getMessage(), ioe); |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
437 } |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
438 } |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
439 |
09a84c6e263a
Enhanced the HttpClient with a method sto trigger a collection specific action.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
5
diff
changeset
|
440 |
9
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
441 /** |
93
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
442 * Write out() operation of a Collection to <i>out</i>, using buffered |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
443 * reading and writing and a charset. |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
444 * |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
445 * @param in collection out to read from. |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
446 * @param out The OutputStream to write transcoded answer to. |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
447 */ |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
448 private void collectionOutEnc( |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
449 InputStream in, |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
450 OutputStream out) |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
451 throws ConnectionException |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
452 { |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
453 try { |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
454 BufferedReader reader = |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
455 new BufferedReader(new InputStreamReader(in)); |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
456 |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
457 BufferedWriter writer = |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
458 new BufferedWriter(new OutputStreamWriter(out, this.charset)); |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
459 |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
460 try { |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
461 char[] c = new char[4096]; |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
462 int i; |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
463 while ((i = reader.read(c)) >= 0) { |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
464 writer.write(c, 0, i); |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
465 } |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
466 } |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
467 finally { |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
468 writer.flush(); |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
469 in.close(); |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
470 } |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
471 } |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
472 catch (IOException ioe) { |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
473 throw new ConnectionException(ioe.getMessage(), ioe); |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
474 } |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
475 } |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
476 |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
477 |
30b7ca3951c7
issue1494: Add collectionOutEnc(inStream,outStream) function to
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
92
diff
changeset
|
478 /** |
90
8bd13f10d555
issue1494: Prepare HttpClient to use a specified encoding for collectionOut. Doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
72
diff
changeset
|
479 * Write out() operation of a Collection to <i>out</i>. |
9
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
480 * |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
481 * @param doc The request document for the out() operation. |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
482 * @param uuid The identifier of the Collection. |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
483 * @param type The name of the output type. |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
484 * @param out The OutputStream. |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
485 */ |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
486 public void collectionOut( |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
487 Document doc, |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
488 String uuid, |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
489 String type, |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
490 OutputStream out) |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
491 throws ConnectionException |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
492 { |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
493 try { |
12
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
494 InputStream stream = collectionOut(doc, uuid, type); |
9
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
495 |
94
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
496 // Transcode if charset is given. |
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
497 if (charset != null) { |
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
498 collectionOutEnc(stream, out); |
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
499 return; |
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
500 } |
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
501 |
17
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
502 try { |
94
31dc80c48936
issue1494: If encoding is set in collectionOut, use it.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
93
diff
changeset
|
503 byte[] b = new byte[4096]; |
17
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
504 int i; |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
505 while ((i = stream.read(b)) >= 0) { |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
506 out.write(b, 0, i); |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
507 } |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
508 } |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
509 finally { |
5cb8513b9e78
Improved the stream handling.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
12
diff
changeset
|
510 stream.close(); |
9
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
511 } |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
512 } |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
513 catch (IOException ioe) { |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
514 throw new ConnectionException(ioe.getMessage(), ioe); |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
515 } |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
516 } |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
517 |
072e8d488f83
Enhanced the HttpClient with a method to trigger the out() operation of Collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
7
diff
changeset
|
518 |
12
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
519 /** |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
520 * This method triggers the out() operation of a Collection. The result of |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
521 * this operation is returned as an InputStream. |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
522 * |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
523 * @param doc The request document for the out() operation. |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
524 * @param uuid The identifier of the Collection. |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
525 * @param type The name of the output type. |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
526 * |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
527 * @return an InputStream. |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
528 */ |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
529 public InputStream collectionOut( |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
530 Document doc, |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
531 String uuid, |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
532 String type) |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
533 throws ConnectionException |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
534 { |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
535 String url = serverUrl + PATH_OUT_COLLECTION + "/" + uuid + "/" + type; |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
536 |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
537 ResponseHandler handler = new StreamResponseHandler(); |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
538 |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
539 try { |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
540 return (InputStream) handler.handle(doPost(url, doc)); |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
541 } |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
542 catch (IOException ioe) { |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
543 throw new ConnectionException(ioe.getMessage(), ioe); |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
544 } |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
545 } |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
546 |
5b62267a1c3c
The HttpClient got a new method that returns the InputStream of a Collection's OUT operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
11
diff
changeset
|
547 |
4
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
548 /******************************* |
5
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
549 * Service API |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
550 *******************************/ |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
551 |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
552 public Document callService(String url, String service, Document input) |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
553 throws ConnectionException |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
554 { |
21
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
555 DocumentResponseHandler handler = new DocumentResponseHandler(); |
79a5a2455d6d
Use Apache HTTP Client as the underlaying transport agent. Use thread local instances to re-use agents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
17
diff
changeset
|
556 |
26
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
557 return (Document) callService(url, service, input, handler); |
5
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
558 } |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
559 |
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
560 |
26
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
561 public Object callService( |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
562 String url, |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
563 String service, |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
564 Document input, |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
565 ResponseHandler handler) |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
566 throws ConnectionException { |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
567 if (logger.isDebugEnabled()) { |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
568 logger.debug("Start service call to '" + service + "'"); |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
569 } |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
570 |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
571 try { |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
572 String serverUrl = url + PATH_SERVICE + "/" + service; |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
573 return handler.handle(doPost(serverUrl, input)); |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
574 } |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
575 catch (IOException ioe) { |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
576 throw new ConnectionException( |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
577 "Connection to server failed: " + ioe.getMessage()); |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
578 } |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
579 } |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
580 |
c4431f39926a
New method to call a service with a ResponseHandler.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
21
diff
changeset
|
581 |
5
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
582 /******************************* |
4
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
583 * Users API |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
584 *******************************/ |
5
7917c21fad01
Enabled the HttpClient to call services that are registered at the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4
diff
changeset
|
585 |
4
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
586 public Document listUsers() |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
587 throws ConnectionException |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
588 { |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
589 ResponseHandler handler = new DocumentResponseHandler(); |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
590 String url = serverUrl + PATH_LIST_USERS; |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
591 |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
592 try { |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
593 return (Document) handler.handle(doGet(url)); |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
594 } |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
595 catch (IOException ioe) { |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
596 throw new ConnectionException(ioe.getMessage(), ioe); |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
597 } |
19b3ba7f2568
Added a method to the http client to list the existing users of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3
diff
changeset
|
598 } |
7
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
599 |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
600 |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
601 public Document listUserCollections(String userid) |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
602 throws ConnectionException |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
603 { |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
604 ResponseHandler handler = new DocumentResponseHandler(); |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
605 |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
606 String url = serverUrl + PATH_USER_COLLECTIONS + "/" + userid; |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
607 |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
608 try { |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
609 return (Document) handler.handle(doGet(url)); |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
610 } |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
611 catch (IOException ioe) { |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
612 throw new ConnectionException(ioe.getMessage(), ioe); |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
613 } |
06e9e25632cd
Added a method to the HttpClient to list the collection of a user.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
6
diff
changeset
|
614 } |
34
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
615 |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
616 @Override |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
617 public Document createUser(Document doc) |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
618 throws ConnectionException { |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
619 ResponseHandler handler = new DocumentResponseHandler(); |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
620 |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
621 String url = this.serverUrl + PATH_CREATE_USER; |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
622 |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
623 try { |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
624 return (Document) handler.handle(doPost(url, doc)); |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
625 } |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
626 catch (IOException ioe) { |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
627 throw new ConnectionException( |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
628 "Connection to server failed: " + ioe.getMessage()); |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
629 } |
875a5c409560
Implemented a createUser method for HttpClient.
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
26
diff
changeset
|
630 } |
37
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
631 |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
632 @Override |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
633 public Document findUser(Document doc) |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
634 throws ConnectionException { |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
635 ResponseHandler handler = new DocumentResponseHandler(); |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
636 |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
637 String url = this.serverUrl + PATH_FIND_USER; |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
638 |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
639 try { |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
640 return (Document) handler.handle(doPost(url, doc)); |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
641 } |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
642 catch (IOException ioe) { |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
643 throw new ConnectionException( |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
644 "Connection to server failed: " + ioe.getMessage()); |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
645 } |
874c25363dc9
Added new method findUser to HttpClient
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
34
diff
changeset
|
646 } |
1
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
647 } |
c9ac6642973c
Renamed GNVClient and GNVClientImpl to HttpClient and HttpClientImpl.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
648 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: |