comparison flys-client/src/main/java/de/intevation/flys/client/server/GetArtifactServiceImpl.java @ 221:f03c34bec364

Added a new service to query an artifact description. flys-client/trunk@1666 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 12 Apr 2011 07:56:33 +0000
parents
children 924da6695800
comparison
equal deleted inserted replaced
220:35094660f91a 221:f03c34bec364
1 package de.intevation.flys.client.server;
2
3 import org.w3c.dom.Document;
4
5 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
6
7 import de.intevation.artifacts.common.ArtifactNamespaceContext;
8 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
9 import de.intevation.artifacts.common.utils.XMLUtils;
10
11 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
12 import de.intevation.artifacts.httpclient.http.HttpClient;
13 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
14 import de.intevation.artifacts.httpclient.http.response.DocumentResponseHandler;
15
16 import de.intevation.flys.client.shared.exceptions.ServerException;
17 import de.intevation.flys.client.shared.model.Artifact;
18 import de.intevation.flys.client.client.services.GetArtifactService;
19
20
21 /**
22 * This service provides a method that returns an artifact based on its
23 * identifier.
24 *
25 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
26 */
27 public class GetArtifactServiceImpl
28 extends RemoteServiceServlet
29 implements GetArtifactService
30 {
31 public static final String ERROR_DESCRIBE_ARTIFACT =
32 "error_describe_artifact";
33
34 public static final String XPATH_RESULT = "/art:result/text()";
35
36 public static final String OPERATION_FAILURE = "FAILED";
37
38
39 public Artifact getArtifact(String serverUrl, String uuid, String hash)
40 throws ServerException
41 {
42 Document describe = ClientProtocolUtils.newDescribeDocument(
43 uuid, hash, true);
44
45 HttpClient client = new HttpClientImpl(serverUrl);
46
47 try {
48 Document description = (Document) client.describe(
49 new de.intevation.artifacts.httpclient.objects.Artifact(
50 uuid, hash),
51 describe,
52 new DocumentResponseHandler());
53
54 if (description == null) {
55 throw new ServerException(ERROR_DESCRIBE_ARTIFACT);
56 }
57
58 String result = XMLUtils.xpathString(
59 description,
60 XPATH_RESULT,
61 ArtifactNamespaceContext.INSTANCE);
62
63 if (result == null || !result.equals(OPERATION_FAILURE)) {
64 return (Artifact) new FLYSArtifactCreator().create(description);
65 }
66 }
67 catch (ConnectionException ce) {
68 System.err.println(ce.getLocalizedMessage());
69 }
70
71 throw new ServerException(ERROR_DESCRIBE_ARTIFACT);
72 }
73 }
74 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org