19
19
import java .io .IOException ;
20
20
import java .io .InputStream ;
21
21
import java .io .OutputStream ;
22
+ import java .util .Arrays ;
22
23
import java .util .Collections ;
24
+ import java .util .HashSet ;
23
25
import java .util .Objects ;
24
26
import java .util .Set ;
25
27
26
28
import javax .inject .Inject ;
27
29
28
30
import org .n52 .janmayen .http .MediaType ;
29
31
import org .n52 .shetland .ogc .wps .response .ExecuteResponse ;
32
+ import org .n52 .shetland .ogc .wps .response .GetResultResponse ;
33
+ import org .n52 .shetland .ogc .ows .service .OwsServiceResponse ;
30
34
import org .n52 .shetland .ogc .wps .ResponseMode ;
31
35
import org .n52 .shetland .ogc .wps .Result ;
32
36
import org .n52 .shetland .ogc .wps .data .ProcessData ;
45
49
*
46
50
* @author Christian Autermann
47
51
*/
48
- public class StreamingRawWriter implements StreamWriter <ExecuteResponse > {
52
+ public class StreamingRawWriter implements StreamWriter <OwsServiceResponse > {
49
53
50
- private static final StreamWriterKey KEY = new StreamWriterKey (ExecuteResponse .class , new MediaType ());
54
+ private static final Set <StreamWriterKey > KEYS = Collections .unmodifiableSet (new HashSet <>(Arrays .asList (
55
+ new StreamWriterKey (ExecuteResponse .class , new MediaType ()), new StreamWriterKey (GetResultResponse .class ,
56
+ new MediaType ()))));
51
57
52
58
private final StreamWriterRepository streamWriterRepository ;
53
59
@@ -57,10 +63,19 @@ public StreamingRawWriter(StreamWriterRepository streamWriterRepository) {
57
63
}
58
64
59
65
@ Override
60
- public void write (ExecuteResponse object ,
66
+ public void write (OwsServiceResponse object ,
61
67
OutputStream outputStream ) throws EncodingException {
62
- Result result = object .getResult ().filter (r -> r .getResponseMode () == ResponseMode .RAW ).orElseThrow (
63
- () -> new UnsupportedStreamWriterInputException (object ));
68
+
69
+ Result result = null ;
70
+
71
+ if (object instanceof GetResultResponse ) {
72
+ result = ((GetResultResponse ) object ).getResult ();
73
+ } else if (object instanceof ExecuteResponse ) {
74
+ result = ((ExecuteResponse ) object ).getResult ().filter (r -> r .getResponseMode () == ResponseMode .RAW )
75
+ .orElseThrow (() -> new UnsupportedStreamWriterInputException (object ));
76
+ } else {
77
+ throw new UnsupportedStreamWriterInputException (object );
78
+ }
64
79
65
80
ProcessData data = result .getOutputs ().iterator ().next ();
66
81
if (data .isValue ()) {
@@ -83,6 +98,6 @@ private <T> StreamWriter<? super T> getStreamWriter(T data) {
83
98
84
99
@ Override
85
100
public Set <StreamWriterKey > getKeys () {
86
- return Collections . singleton ( KEY ) ;
101
+ return KEYS ;
87
102
}
88
103
}
0 commit comments