1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.fosstrak.epcis.queryclient;
22
23 import java.io.ByteArrayInputStream;
24 import java.io.IOException;
25 import java.io.InputStream;
26 import java.io.PrintWriter;
27
28 import javax.servlet.ServletException;
29 import javax.servlet.http.HttpServlet;
30 import javax.servlet.http.HttpServletRequest;
31 import javax.servlet.http.HttpServletResponse;
32
33 import org.fosstrak.epcis.model.ImplementationException;
34 import org.fosstrak.epcis.model.QueryResults;
35 import org.fosstrak.epcis.model.QueryTooLargeException;
36 import org.fosstrak.epcis.utils.QueryResultsParser;
37
38
39
40
41 public class QueryCallbackClient extends HttpServlet implements QueryCallbackInterface {
42
43 private static final long serialVersionUID = 6250815925403597265L;
44 private static String callbackResults = null;
45
46
47
48
49
50
51 public void callbackResults(QueryResults result) {
52 InputStream is = new ByteArrayInputStream(callbackResults.getBytes());
53 try {
54 result = QueryResultsParser.parseResults(is);
55 } catch (IOException e) {
56
57 e.printStackTrace();
58 }
59 }
60
61
62
63
64
65
66
67
68
69 public static void callbackQueryResults(String result) {
70 result = callbackResults;
71 }
72
73
74
75
76
77
78 public void callbackImplementationException(final ImplementationException e) {
79
80 throw new UnsupportedOperationException();
81 }
82
83
84
85
86
87
88 public void callbackQueryTooLargeException(final QueryTooLargeException e) {
89
90 throw new UnsupportedOperationException();
91 }
92
93
94
95
96
97
98
99 public void doPost(final HttpServletRequest req, final HttpServletResponse rsp) throws ServletException,
100 IOException {
101 rsp.setContentType("text/plain");
102 final PrintWriter out = rsp.getWriter();
103
104
105 try {
106 callbackResults = (String) req.getParameterValues("callbackResults")[0];
107 } catch (NullPointerException e) {
108 throw new IOException("POST argument \"callbackResults=\" not found");
109 }
110
111 out.println("Callback OK.");
112 out.flush();
113 }
114
115
116
117
118
119
120
121 public void doGet(final HttpServletRequest req, final HttpServletResponse rsp) throws ServletException, IOException {
122 rsp.setContentType("text/xml");
123 final PrintWriter out = rsp.getWriter();
124 out.print(callbackResults);
125 }
126 }