package gov.samhsa.acs.xdsb.repository.wsclient;
import gov.samhsa.acs.xdsb.repository.wsclient.exception.XdsbRepositoryClientException;
import ihe.iti.xds_b._2007.ProvideAndRegisterDocumentSetRequest;
import ihe.iti.xds_b._2007.ProvideAndRegisterDocumentSetRequest.Document;
import ihe.iti.xds_b._2007.RetrieveDocumentSetRequest;
import ihe.iti.xds_b._2007.RetrieveDocumentSetRequest.DocumentRequest;
import ihe.iti.xds_b._2007.XDSRepository;
import java.io.ByteArrayInputStream;
import java.io.StringWriter;
import java.net.URL;
import java.util.Properties;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Endpoint;
import oasis.names.tc.ebxml_regrep.xsd.lcm._3.SubmitObjectsRequest;
import oasis.names.tc.ebxml_regrep.xsd.rs._3.RegistryResponse;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class XDSRepositorybClientTest {
protected Endpoint ep;
protected String address;
private ihe.iti.xds_b._2007.RetrieveDocumentSetResponse returnedValueOfRetrieveDocumentSet;
private RegistryResponse provideAndRegisterDocumentSet;
@Before
public void setUp() {
try {
final Resource resource = new ClassPathResource(
"/jettyServerPortForTesing.properties");
final Properties props = PropertiesLoaderUtils
.loadProperties(resource);
final String portNumber = props
.getProperty("jettyServerPortForTesing.number");
address = String.format(
"http://localhost:%s/services/xdsrepositoryb", portNumber);
ep = Endpoint.publish(address, new XdsRepositorybImpl());
XdsRepositorybImpl.returnedValueOfProvideAndRegisterDocumentSet = provideAndRegisterDocumentSet;
XdsRepositorybImpl.returnedValueOfRetrieveDocumentSet = returnedValueOfRetrieveDocumentSet;
} catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@After
public void tearDown() {
try {
ep.stop();
} catch (final Throwable t) {
System.out.println("Error thrown: " + t.getMessage());
}
}
// Test if the stub web service activate properly
@Test
public void testStubWebServiceWorks_provideAndRegisterDocumentSetRequest()
throws JAXBException {
// Arrange
final String submitObjectRequestXml = "<tns:SubmitObjectsRequest xmlns:tns=\"urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0\"> <RegistryObjectList xmlns=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\"> <ObjectRef id=\"urn:uuid:7edca82f-054d-47f2-a032-9b2a5b518fff\" /> <ObjectRef id=\"urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd\" /> <ObjectRef id=\"urn:uuid:f64ffdf0-4b97-4e06-b79f-a52b38ec2f8a\" /> <ObjectRef id=\"urn:uuid:96fdda7c-d067-4183-912e-bf5ee74998a8\" /> <ObjectRef id=\"urn:uuid:554ac39e-e3fe-47fe-b233-965d2a147832\" /> <ObjectRef id=\"urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b38446\" /> <ObjectRef id=\"urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2\" /> <ObjectRef id=\"urn:uuid:f33fb8ac-18af-42cc-ae0e-ed0b0bdb91e1\" /> <ObjectRef id=\"urn:uuid:aa543740-bdda-424e-8c96-df4873be8500\" /> <ObjectRef id=\"urn:uuid:75df8f67-9973-4fbe-a900-df66cefecc5a\" /> <ObjectRef id=\"urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f\" /> <ObjectRef id=\"urn:uuid:a09d5840-386c-46f2-b5ad-9c3699a4309d\" /> <ObjectRef id=\"urn:uuid:cccf5598-8b07-4b77-a05e-ae952c785ead\" /> <ObjectRef id=\"urn:uuid:f0306f51-975f-434e-a61c-c59651d33983\" /> <ObjectRef id=\"urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a\" /> <ObjectRef id=\"urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab\" /> <ObjectRef id=\"urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427\" /> <ObjectRef id=\"urn:uuid:a7058bb9-b4e4-4307-ba5b-e3f0ab85e12d\" /> <ObjectRef id=\"urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d\" /> <ExtrinsicObject mimeType=\"text/xml\" objectType=\"urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1\" id=\"Document01\"> <Slot name=\"creationTime\"> <ValueList> <Value>20110203</Value> </ValueList> </Slot> <Slot name=\"languageCode\"> <ValueList> <Value>en-US</Value> </ValueList> </Slot> <Slot name=\"sourcePatientId\"> <ValueList> <Value>100015060001^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"sourcePatientInfo\"> <ValueList> <Value>PID-3|100015060001^^^&2.16.840.1.113883.3.467&ISO</Value> <Value>PID-5|Patientone^Asample^^^</Value> <Value>PID-7|19710510</Value> <Value>PID-8|M</Value> <Value>PID-11|14235 South St^^Baltimore^Maryland^21075^</Value> </ValueList> </Slot> <Slot name=\"intendedRecipient\"> <ValueList> <Value>^^Internet^Duane_Decouteau@direct.healthvault-stage.com </Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:authorTelecommunication\"> <ValueList> <Value>^^Internet^leo.smith@direct.obhita-stage.org</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:purposeofuse\"> <ValueList> <Value>TREAT</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:obligationpolicy\"> <ValueList> <Value>ENCRYPT</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:refrainpolicy\"> <ValueList> <Value>NORDSLCD</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:sensitivitypolicy\"> <ValueList> <Value>HIV</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:usprivacylaw\"> <ValueList> <Value>42CFRPart2</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Clinic Personal Health Record Extract\" /> </Name> <Description /> <Classification classificationScheme=\"urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d\" classifiedObject=\"Document01\" id=\"urn:uuid:4e1d56a3-cf98-9deb-cfa2-5686b221778e\" nodeRepresentation=\"\"> <Slot name=\"authorPerson\"> <ValueList> <Value>100010020002^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"authorInstitution\"> <ValueList> <Value>XYZ Clinic</Value> </ValueList> </Slot> <Slot name=\"authorRole\"> <ValueList> <Value>Provider</Value> </ValueList> </Slot> <Slot name=\"authorSpecialty\"> <ValueList> <Value>General Medicine</Value> </ValueList> </Slot> </Classification> <Classification id=\"urn:uuid:81dfbd93-a50b-c603-c867-50640424eb1d\" classificationScheme=\"urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a\" classifiedObject=\"Document01\" nodeRepresentation=\"Consult\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon classCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Consult Note\" /> </Name> </Classification> <Classification id=\"cl03\" classificationScheme=\"urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f\" classifiedObject=\"Document01\" nodeRepresentation=\"R\"> <Slot name=\"codingScheme\"> <ValueList> <Value>2.16.840.1.113883.5.25</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"R\" /> </Name> </Classification> <Classification id=\"urn:uuid:fb57bcf4-7f7a-28ab-c29c-fe067854abbd\" classificationScheme=\"urn:uuid:a09d5840-386c-46f2-b5ad-9c3699a4309d\" classifiedObject=\"Document01\" nodeRepresentation=\"2.16.840.1.113883.10.20.1\"> <Slot name=\"codingScheme\"> <ValueList> <Value>HITSP</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"HL7 CCD Document\" /> </Name> </Classification> <Classification id=\"urn:uuid:a6e536d1-b496-4006-e243-5c94b6db7c07\" classificationScheme=\"urn:uuid:f33fb8ac-18af-42cc-ae0e-ed0b0bdb91e1\" classifiedObject=\"Document01\" nodeRepresentation=\"OF\"> <Slot name=\"codingScheme\"> <ValueList> <Value>2.16.840.1.113883.5.11</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Outpatient facility\" /> </Name> </Classification> <Classification id=\"urn:uuid:241be963-c4f3-d799-a6a5-d5a4636a8f0f\" classificationScheme=\"urn:uuid:cccf5598-8b07-4b77-a05e-ae952c785ead\" classifiedObject=\"Document01\" nodeRepresentation=\"Psychiatry\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon practiceSettingCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Psychiatry\" /> </Name> </Classification> <Classification id=\"urn:uuid:7aec7490-a293-12ae-d70b-8976b4f1f703\" classificationScheme=\"urn:uuid:f0306f51-975f-434e-a61c-c59651d33983\" classifiedObject=\"Document01\" nodeRepresentation=\"34133-9\"> <Slot name=\"codingScheme\"> <ValueList> <Value>LOINC</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Summarization of episode note\" /> </Name> </Classification> <ExternalIdentifier id=\"urn:uuid:9afb1c3f-942c-6676-77e2-38fdc3f32a47\" registryObject=\"Document01\" identificationScheme=\"urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427\" value=\"$PatientId\"> <Name> <LocalizedString value=\"XDSDocumentEntry.patientId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:267c9cd2-29e2-81e5-0a78-9bb078c59ec3\" registryObject=\"Document01\" identificationScheme=\"urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab\" value=\"2009.9.1.2500\"> <Name> <LocalizedString value=\"XDSDocumentEntry.uniqueId\" /> </Name> </ExternalIdentifier> </ExtrinsicObject> <RegistryPackage id=\"SubmissionSet\"> <Slot name=\"submissionTime\"> <ValueList> <Value>20110203</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Submission Set\" /> </Name> <Description> <LocalizedString value=\"This Submission Set contains a Clinical Exchange Document\" /> </Description> <Classification id=\"urn:uuid:0ca4ed97-5d52-9f4e-e17e-37b1e8964909\" classificationScheme=\"urn:uuid:a7058bb9-b4e4-4307-ba5b-e3f0ab85e12d\" classifiedObject=\"SubmissionSet\" nodeRepresentation=\"\"> <Slot name=\"authorPerson\"> <ValueList> <Value>100010020002^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"authorInstitution\"> <ValueList> <Value>XYZ Clinic</Value> </ValueList> </Slot> <Slot name=\"authorRole\"> <ValueList> <Value>Provider</Value> </ValueList> </Slot> <Slot name=\"authorSpecialty\"> <ValueList> <Value>General Medicine</Value> </ValueList> </Slot> </Classification> <Classification id=\"urn:uuid:2d7456e0-d449-6b74-27f0-1f870aa21be2\" classificationScheme=\"urn:uuid:aa543740-bdda-424e-8c96-df4873be8500\" classifiedObject=\"SubmissionSet\" nodeRepresentation=\"Summarization of episode\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon contentTypeCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Summarization of episode\" /> </Name> </Classification> <ExternalIdentifier id=\"urn:uuid:90673650-b2d7-25b8-ac08-f5966d228fc8\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:96fdda7c-d067-4183-912e-bf5ee74998a8\" value=\"129.6.58.42.33727\"> <Name> <LocalizedString value=\"XDSSubmissionSet.uniqueId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:73ea59e0-4d41-4bda-03e4-4a5cc2f1ce3b\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:554ac39e-e3fe-47fe-b233-965d2a147832\" value=\"1.3.6.1.4.1.21367.2005.3.999.901\"> <Name> <LocalizedString value=\"XDSSubmissionSet.sourceId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:6e11c871-91c3-0206-9df2-0cb245d2e888\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b38446\" value=\"$PatientId\"> <Name> <LocalizedString value=\"XDSSubmissionSet.patientId\" /> </Name> </ExternalIdentifier> </RegistryPackage> <Classification id=\"urn:uuid:316d4506-6afc-ff81-486e-2d137e36e01c\" classifiedObject=\"SubmissionSet\" classificationNode=\"urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd\" /> <Association id=\"urn:uuid:a02892f9-fb97-bc72-7e3b-85a73f4f170e\" associationType=\"HasMember\" sourceObject=\"SubmissionSet\" targetObject=\"Document01\"> <Slot name=\"SubmissionSetStatus\"> <ValueList> <Value>Original</Value> </ValueList> </Slot> </Association> </RegistryObjectList> </tns:SubmitObjectsRequest>";
final SubmitObjectsRequest submitObjectRequest = unmarshallFromXml(
SubmitObjectsRequest.class, submitObjectRequestXml);
final Document document = new Document();
document.setId("Document01");
document.setValue("xyz".getBytes());
final ProvideAndRegisterDocumentSetRequest request = new ProvideAndRegisterDocumentSetRequest();
request.setSubmitObjectsRequest(submitObjectRequest);
request.getDocument().add(document);
// Act
final Object response = createPort().provideAndRegisterDocumentSet(
request);
// Assert
validateResponseOfProvideAndRegisterDocumentSet(response);
}
// Test if the stub web service activate properly
@Test
public void testStubWebServiceWorks_retrieveDocumentSetRequest() {
// Arrange
final RetrieveDocumentSetRequest request = new RetrieveDocumentSetRequest();
final DocumentRequest documentRequest = new DocumentRequest();
documentRequest.setHomeCommunityId("HC");
documentRequest
.setRepositoryUniqueId("1.3.6.1.4.1.21367.2010.1.2.1040");
documentRequest.setDocumentUniqueId("$uniqueId06");
request.getDocumentRequest().add(documentRequest);
// Act
final Object response = createPort().retrieveDocumentSet(request);
// Assert
validateResponseOfRetrieveDocumentSetRequest(response);
}
// Test if the SOAP client calling the stub web service correctly?
@Test
public void testWSClientSOAPCallWorks_provideAndRegisterDocumentSetRequest()
throws JAXBException {
// Arrange
final String submitObjectRequestXml = "<tns:SubmitObjectsRequest xmlns:tns=\"urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0\"> <RegistryObjectList xmlns=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\"> <ObjectRef id=\"urn:uuid:7edca82f-054d-47f2-a032-9b2a5b518fff\" /> <ObjectRef id=\"urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd\" /> <ObjectRef id=\"urn:uuid:f64ffdf0-4b97-4e06-b79f-a52b38ec2f8a\" /> <ObjectRef id=\"urn:uuid:96fdda7c-d067-4183-912e-bf5ee74998a8\" /> <ObjectRef id=\"urn:uuid:554ac39e-e3fe-47fe-b233-965d2a147832\" /> <ObjectRef id=\"urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b38446\" /> <ObjectRef id=\"urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2\" /> <ObjectRef id=\"urn:uuid:f33fb8ac-18af-42cc-ae0e-ed0b0bdb91e1\" /> <ObjectRef id=\"urn:uuid:aa543740-bdda-424e-8c96-df4873be8500\" /> <ObjectRef id=\"urn:uuid:75df8f67-9973-4fbe-a900-df66cefecc5a\" /> <ObjectRef id=\"urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f\" /> <ObjectRef id=\"urn:uuid:a09d5840-386c-46f2-b5ad-9c3699a4309d\" /> <ObjectRef id=\"urn:uuid:cccf5598-8b07-4b77-a05e-ae952c785ead\" /> <ObjectRef id=\"urn:uuid:f0306f51-975f-434e-a61c-c59651d33983\" /> <ObjectRef id=\"urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a\" /> <ObjectRef id=\"urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab\" /> <ObjectRef id=\"urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427\" /> <ObjectRef id=\"urn:uuid:a7058bb9-b4e4-4307-ba5b-e3f0ab85e12d\" /> <ObjectRef id=\"urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d\" /> <ExtrinsicObject mimeType=\"text/xml\" objectType=\"urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1\" id=\"Document01\"> <Slot name=\"creationTime\"> <ValueList> <Value>20110203</Value> </ValueList> </Slot> <Slot name=\"languageCode\"> <ValueList> <Value>en-US</Value> </ValueList> </Slot> <Slot name=\"sourcePatientId\"> <ValueList> <Value>100015060001^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"sourcePatientInfo\"> <ValueList> <Value>PID-3|100015060001^^^&2.16.840.1.113883.3.467&ISO</Value> <Value>PID-5|Patientone^Asample^^^</Value> <Value>PID-7|19710510</Value> <Value>PID-8|M</Value> <Value>PID-11|14235 South St^^Baltimore^Maryland^21075^</Value> </ValueList> </Slot> <Slot name=\"intendedRecipient\"> <ValueList> <Value>^^Internet^Duane_Decouteau@direct.healthvault-stage.com </Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:authorTelecommunication\"> <ValueList> <Value>^^Internet^leo.smith@direct.obhita-stage.org</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:purposeofuse\"> <ValueList> <Value>TREAT</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:obligationpolicy\"> <ValueList> <Value>ENCRYPT</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:refrainpolicy\"> <ValueList> <Value>NORDSLCD</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:sensitivitypolicy\"> <ValueList> <Value>HIV</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:usprivacylaw\"> <ValueList> <Value>42CFRPart2</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Clinic Personal Health Record Extract\" /> </Name> <Description /> <Classification classificationScheme=\"urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d\" classifiedObject=\"Document01\" id=\"urn:uuid:4e1d56a3-cf98-9deb-cfa2-5686b221778e\" nodeRepresentation=\"\"> <Slot name=\"authorPerson\"> <ValueList> <Value>100010020002^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"authorInstitution\"> <ValueList> <Value>XYZ Clinic</Value> </ValueList> </Slot> <Slot name=\"authorRole\"> <ValueList> <Value>Provider</Value> </ValueList> </Slot> <Slot name=\"authorSpecialty\"> <ValueList> <Value>General Medicine</Value> </ValueList> </Slot> </Classification> <Classification id=\"urn:uuid:81dfbd93-a50b-c603-c867-50640424eb1d\" classificationScheme=\"urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a\" classifiedObject=\"Document01\" nodeRepresentation=\"Consult\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon classCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Consult Note\" /> </Name> </Classification> <Classification id=\"cl03\" classificationScheme=\"urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f\" classifiedObject=\"Document01\" nodeRepresentation=\"R\"> <Slot name=\"codingScheme\"> <ValueList> <Value>2.16.840.1.113883.5.25</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"R\" /> </Name> </Classification> <Classification id=\"urn:uuid:fb57bcf4-7f7a-28ab-c29c-fe067854abbd\" classificationScheme=\"urn:uuid:a09d5840-386c-46f2-b5ad-9c3699a4309d\" classifiedObject=\"Document01\" nodeRepresentation=\"2.16.840.1.113883.10.20.1\"> <Slot name=\"codingScheme\"> <ValueList> <Value>HITSP</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"HL7 CCD Document\" /> </Name> </Classification> <Classification id=\"urn:uuid:a6e536d1-b496-4006-e243-5c94b6db7c07\" classificationScheme=\"urn:uuid:f33fb8ac-18af-42cc-ae0e-ed0b0bdb91e1\" classifiedObject=\"Document01\" nodeRepresentation=\"OF\"> <Slot name=\"codingScheme\"> <ValueList> <Value>2.16.840.1.113883.5.11</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Outpatient facility\" /> </Name> </Classification> <Classification id=\"urn:uuid:241be963-c4f3-d799-a6a5-d5a4636a8f0f\" classificationScheme=\"urn:uuid:cccf5598-8b07-4b77-a05e-ae952c785ead\" classifiedObject=\"Document01\" nodeRepresentation=\"Psychiatry\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon practiceSettingCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Psychiatry\" /> </Name> </Classification> <Classification id=\"urn:uuid:7aec7490-a293-12ae-d70b-8976b4f1f703\" classificationScheme=\"urn:uuid:f0306f51-975f-434e-a61c-c59651d33983\" classifiedObject=\"Document01\" nodeRepresentation=\"34133-9\"> <Slot name=\"codingScheme\"> <ValueList> <Value>LOINC</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Summarization of episode note\" /> </Name> </Classification> <ExternalIdentifier id=\"urn:uuid:9afb1c3f-942c-6676-77e2-38fdc3f32a47\" registryObject=\"Document01\" identificationScheme=\"urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427\" value=\"$PatientId\"> <Name> <LocalizedString value=\"XDSDocumentEntry.patientId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:267c9cd2-29e2-81e5-0a78-9bb078c59ec3\" registryObject=\"Document01\" identificationScheme=\"urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab\" value=\"2009.9.1.2500\"> <Name> <LocalizedString value=\"XDSDocumentEntry.uniqueId\" /> </Name> </ExternalIdentifier> </ExtrinsicObject> <RegistryPackage id=\"SubmissionSet\"> <Slot name=\"submissionTime\"> <ValueList> <Value>20110203</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Submission Set\" /> </Name> <Description> <LocalizedString value=\"This Submission Set contains a Clinical Exchange Document\" /> </Description> <Classification id=\"urn:uuid:0ca4ed97-5d52-9f4e-e17e-37b1e8964909\" classificationScheme=\"urn:uuid:a7058bb9-b4e4-4307-ba5b-e3f0ab85e12d\" classifiedObject=\"SubmissionSet\" nodeRepresentation=\"\"> <Slot name=\"authorPerson\"> <ValueList> <Value>100010020002^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"authorInstitution\"> <ValueList> <Value>XYZ Clinic</Value> </ValueList> </Slot> <Slot name=\"authorRole\"> <ValueList> <Value>Provider</Value> </ValueList> </Slot> <Slot name=\"authorSpecialty\"> <ValueList> <Value>General Medicine</Value> </ValueList> </Slot> </Classification> <Classification id=\"urn:uuid:2d7456e0-d449-6b74-27f0-1f870aa21be2\" classificationScheme=\"urn:uuid:aa543740-bdda-424e-8c96-df4873be8500\" classifiedObject=\"SubmissionSet\" nodeRepresentation=\"Summarization of episode\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon contentTypeCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Summarization of episode\" /> </Name> </Classification> <ExternalIdentifier id=\"urn:uuid:90673650-b2d7-25b8-ac08-f5966d228fc8\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:96fdda7c-d067-4183-912e-bf5ee74998a8\" value=\"129.6.58.42.33727\"> <Name> <LocalizedString value=\"XDSSubmissionSet.uniqueId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:73ea59e0-4d41-4bda-03e4-4a5cc2f1ce3b\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:554ac39e-e3fe-47fe-b233-965d2a147832\" value=\"1.3.6.1.4.1.21367.2005.3.999.901\"> <Name> <LocalizedString value=\"XDSSubmissionSet.sourceId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:6e11c871-91c3-0206-9df2-0cb245d2e888\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b38446\" value=\"$PatientId\"> <Name> <LocalizedString value=\"XDSSubmissionSet.patientId\" /> </Name> </ExternalIdentifier> </RegistryPackage> <Classification id=\"urn:uuid:316d4506-6afc-ff81-486e-2d137e36e01c\" classifiedObject=\"SubmissionSet\" classificationNode=\"urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd\" /> <Association id=\"urn:uuid:a02892f9-fb97-bc72-7e3b-85a73f4f170e\" associationType=\"HasMember\" sourceObject=\"SubmissionSet\" targetObject=\"Document01\"> <Slot name=\"SubmissionSetStatus\"> <ValueList> <Value>Original</Value> </ValueList> </Slot> </Association> </RegistryObjectList> </tns:SubmitObjectsRequest>";
SubmitObjectsRequest submitObjectRequest = new SubmitObjectsRequest();
submitObjectRequest = unmarshallFromXml(SubmitObjectsRequest.class,
submitObjectRequestXml);
final Document document = new Document();
document.setId("Document01");
document.setValue("xyz".getBytes());
final ProvideAndRegisterDocumentSetRequest request = new ProvideAndRegisterDocumentSetRequest();
request.setSubmitObjectsRequest(submitObjectRequest);
request.getDocument().add(document);
final XDSRepositorybWebServiceClient wsc = new XDSRepositorybWebServiceClient(
address);
// Act
final Object response = wsc.provideAndRegisterDocumentSet(request);
// Assert
validateResponseOfProvideAndRegisterDocumentSet(response);
}
@Test(expected = XdsbRepositoryClientException.class)
public void testWSClientSOAPCallWorks_provideAndRegisterDocumentSetRequest_Throws_Exception()
throws JAXBException {
// Arrange
initExceptionEndpoint();
final String submitObjectRequestXml = "<tns:SubmitObjectsRequest xmlns:tns=\"urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0\"> <RegistryObjectList xmlns=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\"> <ObjectRef id=\"urn:uuid:7edca82f-054d-47f2-a032-9b2a5b518fff\" /> <ObjectRef id=\"urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd\" /> <ObjectRef id=\"urn:uuid:f64ffdf0-4b97-4e06-b79f-a52b38ec2f8a\" /> <ObjectRef id=\"urn:uuid:96fdda7c-d067-4183-912e-bf5ee74998a8\" /> <ObjectRef id=\"urn:uuid:554ac39e-e3fe-47fe-b233-965d2a147832\" /> <ObjectRef id=\"urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b38446\" /> <ObjectRef id=\"urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2\" /> <ObjectRef id=\"urn:uuid:f33fb8ac-18af-42cc-ae0e-ed0b0bdb91e1\" /> <ObjectRef id=\"urn:uuid:aa543740-bdda-424e-8c96-df4873be8500\" /> <ObjectRef id=\"urn:uuid:75df8f67-9973-4fbe-a900-df66cefecc5a\" /> <ObjectRef id=\"urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f\" /> <ObjectRef id=\"urn:uuid:a09d5840-386c-46f2-b5ad-9c3699a4309d\" /> <ObjectRef id=\"urn:uuid:cccf5598-8b07-4b77-a05e-ae952c785ead\" /> <ObjectRef id=\"urn:uuid:f0306f51-975f-434e-a61c-c59651d33983\" /> <ObjectRef id=\"urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a\" /> <ObjectRef id=\"urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab\" /> <ObjectRef id=\"urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427\" /> <ObjectRef id=\"urn:uuid:a7058bb9-b4e4-4307-ba5b-e3f0ab85e12d\" /> <ObjectRef id=\"urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d\" /> <ExtrinsicObject mimeType=\"text/xml\" objectType=\"urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1\" id=\"Document01\"> <Slot name=\"creationTime\"> <ValueList> <Value>20110203</Value> </ValueList> </Slot> <Slot name=\"languageCode\"> <ValueList> <Value>en-US</Value> </ValueList> </Slot> <Slot name=\"sourcePatientId\"> <ValueList> <Value>100015060001^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"sourcePatientInfo\"> <ValueList> <Value>PID-3|100015060001^^^&2.16.840.1.113883.3.467&ISO</Value> <Value>PID-5|Patientone^Asample^^^</Value> <Value>PID-7|19710510</Value> <Value>PID-8|M</Value> <Value>PID-11|14235 South St^^Baltimore^Maryland^21075^</Value> </ValueList> </Slot> <Slot name=\"intendedRecipient\"> <ValueList> <Value>^^Internet^Duane_Decouteau@direct.healthvault-stage.com </Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:authorTelecommunication\"> <ValueList> <Value>^^Internet^leo.smith@direct.obhita-stage.org</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:purposeofuse\"> <ValueList> <Value>TREAT</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:obligationpolicy\"> <ValueList> <Value>ENCRYPT</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:refrainpolicy\"> <ValueList> <Value>NORDSLCD</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:sensitivitypolicy\"> <ValueList> <Value>HIV</Value> </ValueList> </Slot> <Slot name=\"urn:siframework.org:ds4p:usprivacylaw\"> <ValueList> <Value>42CFRPart2</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Clinic Personal Health Record Extract\" /> </Name> <Description /> <Classification classificationScheme=\"urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d\" classifiedObject=\"Document01\" id=\"urn:uuid:4e1d56a3-cf98-9deb-cfa2-5686b221778e\" nodeRepresentation=\"\"> <Slot name=\"authorPerson\"> <ValueList> <Value>100010020002^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"authorInstitution\"> <ValueList> <Value>XYZ Clinic</Value> </ValueList> </Slot> <Slot name=\"authorRole\"> <ValueList> <Value>Provider</Value> </ValueList> </Slot> <Slot name=\"authorSpecialty\"> <ValueList> <Value>General Medicine</Value> </ValueList> </Slot> </Classification> <Classification id=\"urn:uuid:81dfbd93-a50b-c603-c867-50640424eb1d\" classificationScheme=\"urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a\" classifiedObject=\"Document01\" nodeRepresentation=\"Consult\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon classCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Consult Note\" /> </Name> </Classification> <Classification id=\"cl03\" classificationScheme=\"urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f\" classifiedObject=\"Document01\" nodeRepresentation=\"R\"> <Slot name=\"codingScheme\"> <ValueList> <Value>2.16.840.1.113883.5.25</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"R\" /> </Name> </Classification> <Classification id=\"urn:uuid:fb57bcf4-7f7a-28ab-c29c-fe067854abbd\" classificationScheme=\"urn:uuid:a09d5840-386c-46f2-b5ad-9c3699a4309d\" classifiedObject=\"Document01\" nodeRepresentation=\"2.16.840.1.113883.10.20.1\"> <Slot name=\"codingScheme\"> <ValueList> <Value>HITSP</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"HL7 CCD Document\" /> </Name> </Classification> <Classification id=\"urn:uuid:a6e536d1-b496-4006-e243-5c94b6db7c07\" classificationScheme=\"urn:uuid:f33fb8ac-18af-42cc-ae0e-ed0b0bdb91e1\" classifiedObject=\"Document01\" nodeRepresentation=\"OF\"> <Slot name=\"codingScheme\"> <ValueList> <Value>2.16.840.1.113883.5.11</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Outpatient facility\" /> </Name> </Classification> <Classification id=\"urn:uuid:241be963-c4f3-d799-a6a5-d5a4636a8f0f\" classificationScheme=\"urn:uuid:cccf5598-8b07-4b77-a05e-ae952c785ead\" classifiedObject=\"Document01\" nodeRepresentation=\"Psychiatry\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon practiceSettingCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Psychiatry\" /> </Name> </Classification> <Classification id=\"urn:uuid:7aec7490-a293-12ae-d70b-8976b4f1f703\" classificationScheme=\"urn:uuid:f0306f51-975f-434e-a61c-c59651d33983\" classifiedObject=\"Document01\" nodeRepresentation=\"34133-9\"> <Slot name=\"codingScheme\"> <ValueList> <Value>LOINC</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Summarization of episode note\" /> </Name> </Classification> <ExternalIdentifier id=\"urn:uuid:9afb1c3f-942c-6676-77e2-38fdc3f32a47\" registryObject=\"Document01\" identificationScheme=\"urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427\" value=\"$PatientId\"> <Name> <LocalizedString value=\"XDSDocumentEntry.patientId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:267c9cd2-29e2-81e5-0a78-9bb078c59ec3\" registryObject=\"Document01\" identificationScheme=\"urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab\" value=\"2009.9.1.2500\"> <Name> <LocalizedString value=\"XDSDocumentEntry.uniqueId\" /> </Name> </ExternalIdentifier> </ExtrinsicObject> <RegistryPackage id=\"SubmissionSet\"> <Slot name=\"submissionTime\"> <ValueList> <Value>20110203</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Submission Set\" /> </Name> <Description> <LocalizedString value=\"This Submission Set contains a Clinical Exchange Document\" /> </Description> <Classification id=\"urn:uuid:0ca4ed97-5d52-9f4e-e17e-37b1e8964909\" classificationScheme=\"urn:uuid:a7058bb9-b4e4-4307-ba5b-e3f0ab85e12d\" classifiedObject=\"SubmissionSet\" nodeRepresentation=\"\"> <Slot name=\"authorPerson\"> <ValueList> <Value>100010020002^^^&2.16.840.1.113883.3.467&ISO</Value> </ValueList> </Slot> <Slot name=\"authorInstitution\"> <ValueList> <Value>XYZ Clinic</Value> </ValueList> </Slot> <Slot name=\"authorRole\"> <ValueList> <Value>Provider</Value> </ValueList> </Slot> <Slot name=\"authorSpecialty\"> <ValueList> <Value>General Medicine</Value> </ValueList> </Slot> </Classification> <Classification id=\"urn:uuid:2d7456e0-d449-6b74-27f0-1f870aa21be2\" classificationScheme=\"urn:uuid:aa543740-bdda-424e-8c96-df4873be8500\" classifiedObject=\"SubmissionSet\" nodeRepresentation=\"Summarization of episode\"> <Slot name=\"codingScheme\"> <ValueList> <Value>Connect-a-thon contentTypeCodes</Value> </ValueList> </Slot> <Name> <LocalizedString value=\"Summarization of episode\" /> </Name> </Classification> <ExternalIdentifier id=\"urn:uuid:90673650-b2d7-25b8-ac08-f5966d228fc8\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:96fdda7c-d067-4183-912e-bf5ee74998a8\" value=\"129.6.58.42.33727\"> <Name> <LocalizedString value=\"XDSSubmissionSet.uniqueId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:73ea59e0-4d41-4bda-03e4-4a5cc2f1ce3b\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:554ac39e-e3fe-47fe-b233-965d2a147832\" value=\"1.3.6.1.4.1.21367.2005.3.999.901\"> <Name> <LocalizedString value=\"XDSSubmissionSet.sourceId\" /> </Name> </ExternalIdentifier> <ExternalIdentifier id=\"urn:uuid:6e11c871-91c3-0206-9df2-0cb245d2e888\" registryObject=\"SubmissionSet\" identificationScheme=\"urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b38446\" value=\"$PatientId\"> <Name> <LocalizedString value=\"XDSSubmissionSet.patientId\" /> </Name> </ExternalIdentifier> </RegistryPackage> <Classification id=\"urn:uuid:316d4506-6afc-ff81-486e-2d137e36e01c\" classifiedObject=\"SubmissionSet\" classificationNode=\"urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd\" /> <Association id=\"urn:uuid:a02892f9-fb97-bc72-7e3b-85a73f4f170e\" associationType=\"HasMember\" sourceObject=\"SubmissionSet\" targetObject=\"Document01\"> <Slot name=\"SubmissionSetStatus\"> <ValueList> <Value>Original</Value> </ValueList> </Slot> </Association> </RegistryObjectList> </tns:SubmitObjectsRequest>";
SubmitObjectsRequest submitObjectRequest = new SubmitObjectsRequest();
submitObjectRequest = unmarshallFromXml(SubmitObjectsRequest.class,
submitObjectRequestXml);
final Document document = new Document();
document.setId("Document01");
document.setValue("xyz".getBytes());
final ProvideAndRegisterDocumentSetRequest request = new ProvideAndRegisterDocumentSetRequest();
request.setSubmitObjectsRequest(submitObjectRequest);
request.getDocument().add(document);
final XDSRepositorybWebServiceClient wsc = new XDSRepositorybWebServiceClient(
address);
// Act
final Object response = wsc.provideAndRegisterDocumentSet(request);
// Assert
validateResponseOfProvideAndRegisterDocumentSet(response);
}
/*
* @Test public void testProvideAndRegisterDocumentSetRequest() throws
* JAXBException { final String demoEndpoint =
* "http://feijboss01:8080/axis2/services/xdsrepositoryb"; final String
* javaVmEndpoint =
* "http://192.168.223.134:8080/axis2/services/xdsrepositoryb"; final String
* dotnetVmEndpoint =
* "http://192.168.223.128:8080/xdsservice/xdsrepository";
*
* InputStream is = getClass().getClassLoader().getResourceAsStream(
* "xdsbMetadata.xml");
*
* BufferedReader br = new BufferedReader(new InputStreamReader(is));
*
* StringBuilder metadataStringBuilder = new StringBuilder(); String line;
*
* try { while ((line = br.readLine()) != null) {
* metadataStringBuilder.append(line); }
*
* br.close(); is.close(); } catch (IOException e) { // TODO Auto-generated
* catch block e.printStackTrace(); }
*
* String submitObjectRequestXml = metadataStringBuilder.toString();
* SubmitObjectsRequest submitObjectRequest = new SubmitObjectsRequest();
* submitObjectRequest = unmarshallFromXml(SubmitObjectsRequest.class,
* submitObjectRequestXml);
*
* Document document = new Document(); document.setId("Document_01");
* document.setValue("xyz".getBytes());
*
* ProvideAndRegisterDocumentSetRequest request = new
* ProvideAndRegisterDocumentSetRequest();
* request.setSubmitObjectsRequest(submitObjectRequest);
* request.getDocument().add(document);
*
* XDSRepositorybWebServiceClient wsc = new XDSRepositorybWebServiceClient(
* dotnetVmEndpoint); RegistryResponseType response = wsc
* .provideAndRegisterDocumentSetReponse(request); try {
* System.out.println(marshall(response)); } catch (Throwable e) { // TODO
* Auto-generated catch block e.printStackTrace(); } }
*/
// Test if the SOAP client calling the stub web service correctly?
@Test
public void testWSClientSOAPCallWorks_retrieveDocumentSetRequest() {
// Arrange
final RetrieveDocumentSetRequest request = new RetrieveDocumentSetRequest();
final DocumentRequest documentRequest = new DocumentRequest();
documentRequest.setHomeCommunityId("HC");
documentRequest
.setRepositoryUniqueId("1.3.6.1.4.1.21367.2010.1.2.1040");
documentRequest.setDocumentUniqueId("$uniqueId06");
request.getDocumentRequest().add(documentRequest);
final XDSRepositorybWebServiceClient wsc = new XDSRepositorybWebServiceClient(
address);
// Act
final Object response = wsc.retrieveDocumentSet(request);
// Assert
validateResponseOfRetrieveDocumentSetRequest(response);
}
@Test(expected = XdsbRepositoryClientException.class)
public void testWSClientSOAPCallWorks_retrieveDocumentSetRequest_Throws_Exception() {
// Arrange
initExceptionEndpoint();
final RetrieveDocumentSetRequest request = new RetrieveDocumentSetRequest();
final DocumentRequest documentRequest = new DocumentRequest();
documentRequest.setHomeCommunityId("HC");
documentRequest
.setRepositoryUniqueId("1.3.6.1.4.1.21367.2010.1.2.1040");
documentRequest.setDocumentUniqueId("$uniqueId06");
request.getDocumentRequest().add(documentRequest);
final XDSRepositorybWebServiceClient wsc = new XDSRepositorybWebServiceClient(
address);
// Act
final Object response = wsc.retrieveDocumentSet(request);
// Assert
validateResponseOfRetrieveDocumentSetRequest(response);
}
private XDSRepository createPort() {
final URL WSDL_LOCATION = this.getClass().getClassLoader()
.getResource("XDS.b_repository.net.wsdl");
final QName SERVICE = new QName("http://tempuri.org/",
"DocumentRepositoryService");
final XDSRepository port = new org.tempuri.DocumentRepositoryService(
WSDL_LOCATION, SERVICE).getXDSRepositoryHTTPEndpoint();
final BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
address);
return port;
}
private void initExceptionEndpoint() {
ep.stop();
ep = Endpoint.publish(address,
new XdsRepositorybImplThrowingException());
}
private <T> T unmarshallFromXml(Class<T> clazz, String xml)
throws JAXBException {
final JAXBContext context = JAXBContext.newInstance(clazz);
final Unmarshaller um = context.createUnmarshaller();
final ByteArrayInputStream input = new ByteArrayInputStream(
xml.getBytes());
return (T) um.unmarshal(input);
}
private void validateResponseOfProvideAndRegisterDocumentSet(Object response) {
Assert.assertNotNull(response);
}
private void validateResponseOfRetrieveDocumentSetRequest(Object response) {
Assert.assertNotNull(response);
}
private static String marshall(Object obj) throws Throwable {
final JAXBContext context = JAXBContext.newInstance(obj.getClass());
// Create the marshaller, this is the nifty little thing that will
// actually transform the object into XML
final Marshaller marshaller = context.createMarshaller();
// Create a stringWriter to hold the XML
final StringWriter stringWriter = new StringWriter();
// Marshal the javaObject and write the XML to the stringWriter
marshaller.marshal(obj, stringWriter);
return stringWriter.toString();
}
}