Skip to content

Commit 07b99f9

Browse files
authored
Merge pull request #39 from 52North/develop
Merge develop
2 parents 2fee920 + 8fe443e commit 07b99f9

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

xml/src/main/java/org/n52/javaps/service/xml/StreamingRawWriter.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@
1919
import java.io.IOException;
2020
import java.io.InputStream;
2121
import java.io.OutputStream;
22+
import java.util.Arrays;
2223
import java.util.Collections;
24+
import java.util.HashSet;
2325
import java.util.Objects;
2426
import java.util.Set;
2527

2628
import javax.inject.Inject;
2729

2830
import org.n52.janmayen.http.MediaType;
2931
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;
3034
import org.n52.shetland.ogc.wps.ResponseMode;
3135
import org.n52.shetland.ogc.wps.Result;
3236
import org.n52.shetland.ogc.wps.data.ProcessData;
@@ -45,9 +49,11 @@
4549
*
4650
* @author Christian Autermann
4751
*/
48-
public class StreamingRawWriter implements StreamWriter<ExecuteResponse> {
52+
public class StreamingRawWriter implements StreamWriter<OwsServiceResponse> {
4953

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()))));
5157

5258
private final StreamWriterRepository streamWriterRepository;
5359

@@ -57,10 +63,19 @@ public StreamingRawWriter(StreamWriterRepository streamWriterRepository) {
5763
}
5864

5965
@Override
60-
public void write(ExecuteResponse object,
66+
public void write(OwsServiceResponse object,
6167
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+
}
6479

6580
ProcessData data = result.getOutputs().iterator().next();
6681
if (data.isValue()) {
@@ -83,6 +98,6 @@ private <T> StreamWriter<? super T> getStreamWriter(T data) {
8398

8499
@Override
85100
public Set<StreamWriterKey> getKeys() {
86-
return Collections.singleton(KEY);
101+
return KEYS;
87102
}
88103
}

0 commit comments

Comments
 (0)