package edu.harvard.i2b2.common.datavo; import edu.harvard.i2b2.common.util.jaxb.JAXBUtil; import edu.harvard.i2b2.core.datavo.pdo.PatientDataType; import edu.harvard.i2b2.datavo.i2b2message.ApplicationType; import edu.harvard.i2b2.datavo.i2b2message.BodyType; import edu.harvard.i2b2.datavo.i2b2message.MessageControlIdType; import edu.harvard.i2b2.datavo.i2b2message.MessageHeaderType; import edu.harvard.i2b2.datavo.i2b2message.MessageTypeType; import edu.harvard.i2b2.datavo.i2b2message.RequestHeaderType; import edu.harvard.i2b2.datavo.i2b2message.RequestMessageType; import edu.harvard.i2b2.datavo.i2b2message.ResponseMessageType; import junit.framework.TestCase; import java.io.StringWriter; import javax.xml.bind.JAXBElement; public class I2B2MessageWriteTest extends TestCase { private MessageHeaderType createMessageHeader() { MessageHeaderType messageHeader = new MessageHeaderType(); messageHeader.setAcceptAcknowledgementType(new String("messageId")); MessageControlIdType mcIdType = new MessageControlIdType(); mcIdType.setInstanceNum(1); mcIdType.setMessageNum("1"); mcIdType.setSessionId("1"); messageHeader.setMessageControlId(mcIdType); MessageTypeType messageTypeType = new MessageTypeType(); messageTypeType.setEventType("eventype"); messageTypeType.setMessageCode("messageCode"); messageHeader.setMessageType(messageTypeType); ApplicationType appType = new ApplicationType(); appType.setApplicationName("appname"); appType.setApplicationVersion("1.0"); messageHeader.setSendingApplication(appType); messageHeader.setReceivingApplication(appType); return messageHeader; } public RequestHeaderType createRequestHeader() { RequestHeaderType reqHeader = new RequestHeaderType(); reqHeader.setResultWaittimeMs(1000); return reqHeader; } private BodyType createBodyWithPDO() { PatientDataMessageTest pdoTest = new PatientDataMessageTest(); PatientDataType pdo = pdoTest.createPatientDataType(); edu.harvard.i2b2.core.datavo.pdo.ObjectFactory of = new edu.harvard.i2b2.core.datavo.pdo.ObjectFactory(); BodyType bodyType = new BodyType(); bodyType.getAny().add(of.createPatientData(pdo)); return bodyType; } private String getXMLString(JAXBElement<?> jaxbElement) throws Exception { JAXBUtil jaxbUtil = new JAXBUtil(new String[] { "edu.harvard.i2b2.datavo.i2b2message", "edu.harvard.i2b2.core.datavo.pdo" }); StringWriter strWriter = new StringWriter(); jaxbUtil.marshaller(jaxbElement, strWriter); return strWriter.toString(); } public void testWritei2b2RequestMessage() throws Exception { RequestMessageType reqMsgType = new RequestMessageType(); reqMsgType.setMessageHeader(createMessageHeader()); reqMsgType.setMessageBody(createBodyWithPDO()); reqMsgType.setRequestHeader(createRequestHeader()); edu.harvard.i2b2.datavo.i2b2message.ObjectFactory of = new edu.harvard.i2b2.datavo.i2b2message.ObjectFactory(); JAXBElement<?> jaxbElement = of.createRequest(reqMsgType); String xmlMessage = getXMLString(jaxbElement); System.out.println("Request Message"); System.out.println(xmlMessage); } public void testWritei2b2ResponseMessage() throws Exception { ResponseMessageType resMsgType = new ResponseMessageType(); resMsgType.setMessageHeader(createMessageHeader()); resMsgType.setMessageBody(createBodyWithPDO()); edu.harvard.i2b2.datavo.i2b2message.ObjectFactory of = new edu.harvard.i2b2.datavo.i2b2message.ObjectFactory(); JAXBElement<?> jaxbElement = of.createResponse(resMsgType); String xmlMessage = getXMLString(jaxbElement); System.out.println("Response Message"); System.out.println(xmlMessage); } }