1 | package gov.hhs.fha.nhinc.connectmgr.data;
|
---|
2 |
|
---|
3 | import com.thoughtworks.xstream.XStream;
|
---|
4 | import gov.hhs.fha.nhinc.connectmgr.ConnectionManagerException;
|
---|
5 |
|
---|
6 | /**
|
---|
7 | * This class is used to serialize/deserialize an XML document to/from a UDDIConnectionInfo object.
|
---|
8 | * This class uses XStream to do this.
|
---|
9 | *
|
---|
10 | * @author Les Westberg.
|
---|
11 | */
|
---|
12 | public class CMUDDIConnectionInfoXML
|
---|
13 | {
|
---|
14 | /**
|
---|
15 | * This method serializes an CMUDDIConnectionInfo object to an
|
---|
16 | * XML string.
|
---|
17 | *
|
---|
18 | * @param oCMUDDIConnectionInfo The object to be serialized.
|
---|
19 | * @return The XML string representation of the object.
|
---|
20 | */
|
---|
21 | public static String serialize(CMUDDIConnectionInfo oCMUDDIConnectionInfo)
|
---|
22 | throws ConnectionManagerException
|
---|
23 | {
|
---|
24 | String sXML = "";
|
---|
25 |
|
---|
26 | try
|
---|
27 | {
|
---|
28 | XStream oXStream = new XStream();
|
---|
29 | oXStream.alias("UDDIConnectionInfo", CMUDDIConnectionInfo.class);
|
---|
30 | oXStream.addImplicitCollection(CMBusinessEntities.class, "businessEntityList", "businessEntity", CMBusinessEntity.class);
|
---|
31 | oXStream.useAttributeFor(CMBusinessEntity.class, "businessKey");
|
---|
32 | oXStream.addImplicitCollection(CMDiscoveryURLs.class, "discoveryURLList", "discoveryURL", String.class);
|
---|
33 | oXStream.addImplicitCollection(CMBusinessNames.class, "businessNameList", "businessName", String.class);
|
---|
34 | oXStream.addImplicitCollection(CMBusinessDescriptions.class, "businessDescriptionList", "businessDescription", String.class);
|
---|
35 | oXStream.addImplicitCollection(CMContacts.class, "contactList", "contact", CMContact.class);
|
---|
36 | oXStream.addImplicitCollection(CMContactDescriptions.class, "descriptionList", "description", String.class);
|
---|
37 | oXStream.addImplicitCollection(CMPersonNames.class, "personNameList", "personName", String.class);
|
---|
38 | oXStream.addImplicitCollection(CMPhones.class, "phoneList", "phone", String.class);
|
---|
39 | oXStream.addImplicitCollection(CMEmails.class, "emailList", "email", String.class);
|
---|
40 | oXStream.addImplicitCollection(CMAddresses.class, "addressList", "address", CMAddress.class);
|
---|
41 | oXStream.addImplicitCollection(CMAddress.class, "addressLineList", "addressLine", String.class);
|
---|
42 | oXStream.addImplicitCollection(CMStates.class, "stateList", "state", String.class);
|
---|
43 | oXStream.addImplicitCollection(CMBusinessServices.class, "businessServiceList", "businessService", CMBusinessService.class);
|
---|
44 | oXStream.useAttributeFor(CMBusinessService.class, "serviceKey");
|
---|
45 | oXStream.addImplicitCollection(CMBindingNames.class, "nameList", "name", String.class);
|
---|
46 | oXStream.addImplicitCollection(CMBindingDescriptions.class, "descriptionList", "description", String.class);
|
---|
47 | oXStream.addImplicitCollection(CMBindingTemplates.class, "bindingTemplateList", "bindingTemplate", CMBindingTemplate.class);
|
---|
48 | oXStream.useAttributeFor(CMBindingTemplate.class, "bindingKey");
|
---|
49 |
|
---|
50 | oXStream.processAnnotations(CMUDDIConnectionInfo.class);
|
---|
51 | sXML = oXStream.toXML(oCMUDDIConnectionInfo);
|
---|
52 | }
|
---|
53 | catch (Exception e)
|
---|
54 | {
|
---|
55 | String sErrorMessage = "Failed to serialize the CMUDDIConnectionInfo object to XML. Error: " + e.getMessage();
|
---|
56 | throw new ConnectionManagerException(sErrorMessage, e);
|
---|
57 | }
|
---|
58 |
|
---|
59 | return sXML;
|
---|
60 | }
|
---|
61 |
|
---|
62 | /**
|
---|
63 | * This method takes an XML representation of CMUDDIConnectionInfo and
|
---|
64 | * produces an instance of the object.
|
---|
65 | *
|
---|
66 | * @param sXML The serialized representation of the CMUDDIConnectionInfo object.
|
---|
67 | * @return The object instance of the XML.
|
---|
68 | */
|
---|
69 | public static CMUDDIConnectionInfo deserialize(String sXML)
|
---|
70 | throws ConnectionManagerException
|
---|
71 | {
|
---|
72 | CMUDDIConnectionInfo oCMUDDIConnectionInfo = null;
|
---|
73 |
|
---|
74 | try
|
---|
75 | {
|
---|
76 | oCMUDDIConnectionInfo = new CMUDDIConnectionInfo();
|
---|
77 |
|
---|
78 | XStream oXStream = new XStream();
|
---|
79 | oXStream.alias("UDDIConnectionInfo", CMUDDIConnectionInfo.class);
|
---|
80 | oXStream.addImplicitCollection(CMBusinessEntities.class, "businessEntityList", "businessEntity", CMBusinessEntity.class);
|
---|
81 | oXStream.useAttributeFor(CMBusinessEntity.class, "businessKey");
|
---|
82 | oXStream.addImplicitCollection(CMDiscoveryURLs.class, "discoveryURLList", "discoveryURL", String.class);
|
---|
83 | oXStream.addImplicitCollection(CMBusinessNames.class, "businessNameList", "businessName", String.class);
|
---|
84 | oXStream.addImplicitCollection(CMBusinessDescriptions.class, "businessDescriptionList", "businessDescription", String.class);
|
---|
85 | oXStream.addImplicitCollection(CMContacts.class, "contactList", "contact", CMContact.class);
|
---|
86 | oXStream.addImplicitCollection(CMContactDescriptions.class, "descriptionList", "description", String.class);
|
---|
87 | oXStream.addImplicitCollection(CMPersonNames.class, "personNameList", "personName", String.class);
|
---|
88 | oXStream.addImplicitCollection(CMPhones.class, "phoneList", "phone", String.class);
|
---|
89 | oXStream.addImplicitCollection(CMEmails.class, "emailList", "email", String.class);
|
---|
90 | oXStream.addImplicitCollection(CMAddresses.class, "addressList", "address", CMAddress.class);
|
---|
91 | oXStream.addImplicitCollection(CMAddress.class, "addressLineList", "addressLine", String.class);
|
---|
92 | oXStream.addImplicitCollection(CMStates.class, "stateList", "state", String.class);
|
---|
93 | oXStream.addImplicitCollection(CMBusinessServices.class, "businessServiceList", "businessService", CMBusinessService.class);
|
---|
94 | oXStream.useAttributeFor(CMBusinessService.class, "serviceKey");
|
---|
95 | oXStream.addImplicitCollection(CMBindingNames.class, "nameList", "name", String.class);
|
---|
96 | oXStream.addImplicitCollection(CMBindingDescriptions.class, "descriptionList", "description", String.class);
|
---|
97 | oXStream.addImplicitCollection(CMBindingTemplates.class, "bindingTemplateList", "bindingTemplate", CMBindingTemplate.class);
|
---|
98 | oXStream.useAttributeFor(CMBindingTemplate.class, "bindingKey");
|
---|
99 |
|
---|
100 | oXStream.processAnnotations(CMInternalConnectionInfos.class);
|
---|
101 | Object oObject = oXStream.fromXML(sXML);
|
---|
102 | if (oObject instanceof CMUDDIConnectionInfo)
|
---|
103 | {
|
---|
104 | oCMUDDIConnectionInfo = (CMUDDIConnectionInfo) oObject;
|
---|
105 | }
|
---|
106 | }
|
---|
107 | catch (Exception e)
|
---|
108 | {
|
---|
109 | String sErrorMessage = "Failed to deserialize the XML to a CMUDDIConnectionInfo object. Error: " + e.getMessage();
|
---|
110 | throw new ConnectionManagerException(sErrorMessage, e);
|
---|
111 | }
|
---|
112 |
|
---|
113 |
|
---|
114 | return oCMUDDIConnectionInfo;
|
---|
115 | }
|
---|
116 |
|
---|
117 | }
|
---|