1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.platform.camel.ihe.xds;
18
19 import lombok.extern.slf4j.Slf4j;
20 import org.apache.camel.Exchange;
21 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.RetrieveDocumentSetResponseType;
22 import org.openehealth.ipf.commons.ihe.xds.core.responses.ErrorCode;
23 import org.openehealth.ipf.commons.ihe.xds.core.responses.RetrievedDocumentSet;
24 import org.openehealth.ipf.platform.camel.core.util.Exchanges;
25 import org.openehealth.ipf.platform.camel.ihe.ws.AbstractWebService;
26 import org.openehealth.ipf.platform.camel.ihe.xds.core.converters.EbXML30Converters;
27
28
29
30
31
32
33 @Slf4j
34 public abstract class XdsRetrieveDocumentSetService<T> extends AbstractWebService {
35
36 private final String homeCommunityId;
37
38 public XdsRetrieveDocumentSetService(String homeCommunityId) {
39 this.homeCommunityId = homeCommunityId;
40 }
41
42 protected RetrieveDocumentSetResponseType processRequest(T body) {
43 Exchange result = process(body);
44 Exception exception = Exchanges.extractException(result);
45 if (exception != null) {
46 log.debug(getClass().getSimpleName() + " service failed", exception);
47 RetrievedDocumentSet errorResponse = new RetrievedDocumentSet(
48 exception,
49 ErrorCode.REPOSITORY_METADATA_ERROR,
50 ErrorCode.REPOSITORY_ERROR,
51 homeCommunityId);
52 if (homeCommunityId != null) {
53 errorResponse.getErrors().get(0).setLocation(homeCommunityId);
54 }
55 return EbXML30Converters.convert(errorResponse);
56 }
57
58 return Exchanges.resultMessage(result).getBody(RetrieveDocumentSetResponseType.class);
59 }
60 }