@Override public RegistryResponseType documentRepositoryRemoveDocuments(RemoveDocumentsRequestType body) { Exchange result = process(body); Exception exception = Exchanges.extractException(result); if (exception != null) { log.debug(getClass().getSimpleName() + " service failed", exception); Response errorResponse = new Response( exception, ErrorCode.REPOSITORY_METADATA_ERROR, ErrorCode.REPOSITORY_ERROR, null); return EbXML30Converters.convert(errorResponse); } return Exchanges.resultMessage(result).getBody(RegistryResponseType.class); }
/** * @return a sample response. */ public static Response createResponse() { Response response = new Response(); response.setStatus(Status.FAILURE); response.getErrors().addAll(Arrays.asList( new ErrorInfo(ErrorCode.PATIENT_ID_DOES_NOT_MATCH, "context1", Severity.ERROR, "location1", null), new ErrorInfo(ErrorCode.SQL_ERROR, "context2", Severity.WARNING, null, null), new ErrorInfo(ErrorCode._USER_DEFINED, "context3", Severity.ERROR, "location3", "MyCustomErrorCode"))); return response; }
@Test public void happyCase() throws Exception { String uri = "xds-iti41://localhost:" + getPort() + "/continuaHRNService"; Response response = (Response) send(uri, hrnRequest, Response.class); assertEquals(Status.SUCCESS, response.getStatus()); }
@Test public void testInvalidStatus() { response.setStatus(null); expectFailure(INVALID_STATUS_IN_RESPONSE); }
@Test public void testInvalidErrorCode() { response.getErrors().add(new ErrorInfo(null, null, Severity.ERROR, null, null)); expectFailure(INVALID_ERROR_CODE_IN_RESPONSE); }
/** * Test whether DOM tree can be used as input for Continua HRN. */ @Test public void testDomInputDatatype() throws Exception { String uri = "xds-iti41://localhost:" + getPort() + "/continuaHRNService"; // prepare request, delete original document contents ProvideAndRegisterDocumentSet request = EbXML30Converters.convert(hrnRequest); assertEquals(1, request.getDocuments().size()); Document xdsDocument = request.getDocuments().get(0); xdsDocument.removeContent(DataHandler.class); assertEquals(0, xdsDocument.getContentsCount()); // read in CCD file as DOM tree and make it the new document contents InputStream stream = getClass().getClassLoader().getResourceAsStream("continua-hrn/SampleCCDDocument.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); org.w3c.dom.Document domDocument = builder.parse(stream); xdsDocument.setContent(org.w3c.dom.Document.class, domDocument); // create data handler from DOM tree xdsDocument.getContent(byte[].class); xdsDocument.getContent(DataHandler.class); assertEquals(3, xdsDocument.getContentsCount()); // send the resulting request Response response = (Response) send(uri, hrnRequest, Response.class); assertEquals(Status.SUCCESS, response.getStatus()); }
protected RegistryResponseType processRequest(T body) { Exchange result = process(body, XdsJaxbDataBinding.getCamelHeaders(body), ExchangePattern.InOut); Exception exception = Exchanges.extractException(result); if (exception != null) { log.debug(getClass().getSimpleName() + " service failed", exception); Response errorResponse = new Response( exception, ErrorCode.REGISTRY_METADATA_ERROR, ErrorCode.REGISTRY_ERROR, null); return EbXML30Converters.convert(errorResponse); } return Exchanges.resultMessage(result).getBody(RegistryResponseType.class); } }
/** * Test whether MDHT POJO can be used as input for Continua HRN. */ @Test public void testMdhtInputDatatype() throws Exception { String uri = "xds-iti41://localhost:" + getPort() + "/continuaHRNService"; // prepare request, delete original document contents ProvideAndRegisterDocumentSet request = EbXML30Converters.convert(hrnRequest); assertEquals(1, request.getDocuments().size()); Document xdsDocument = request.getDocuments().get(0); xdsDocument.removeContent(DataHandler.class); assertEquals(0, xdsDocument.getContentsCount()); // read in CCD file as MDHT and make it the new document contents InputStream stream = getClass().getClassLoader().getResourceAsStream("continua-hrn/SampleCCDDocument.xml"); ClinicalDocument mdhtDocument = new CDAR2Parser().parse(stream); xdsDocument.setContent(ClinicalDocument.class, mdhtDocument); // create data handler from MDHT document xdsDocument.getContent(byte[].class); xdsDocument.getContent(DataHandler.class); assertEquals(3, xdsDocument.getContentsCount()); // send the resulting request Response response = (Response) send(uri, hrnRequest, Response.class); assertEquals(Status.SUCCESS, response.getStatus()); }
@Override public RegistryResponseType documentRepositoryProvideAndRegisterDocumentSetB(ProvideAndRegisterDocumentSetRequestType body) { Exchange result = process(body, XdsJaxbDataBinding.getCamelHeaders(body.getSubmitObjectsRequest()), ExchangePattern.InOut); Exception exception = Exchanges.extractException(result); if (exception != null) { log.debug("ITI-41 service failed", exception); Response errorResponse = new Response( exception, ErrorCode.REPOSITORY_METADATA_ERROR, ErrorCode.REPOSITORY_ERROR, null); return EbXML30Converters.convert(errorResponse); } return Exchanges.resultMessage(result).getBody(RegistryResponseType.class); } }
@Test public void testToEbXMLRegistryResponseEmpty() { EbXMLRegistryResponse ebXML = transformer.toEbXML(new Response()); assertNull(ebXML.getStatus()); assertEquals(0, ebXML.getErrors().size()); }
@Override public void configure() throws Exception { from("xds-iti41:continuaHRNService") .onException(Exception.class) .maximumRedeliveries(0) .end() .process(ContinuaHrnCamelProcessors.continuaHrnRequestTransformerAndValidator()) .process(CHECK_PROCESSOR) .setBody(constant(new Response(Status.SUCCESS))) .process(ContinuaHrnCamelProcessors.continuaHrnResponseValidator()); }