@@ -38,6 +38,33 @@ public class GenericConsumer<T, PK> : IGenericConsumer<T, PK> where T : IPersist
3838 private Environment environmentTemplate ;
3939 private RegistrationService registrationService ;
4040
41+ /// <summary>
42+ /// An XML serialiser for a single object.
43+ /// </summary>
44+ private ISerialiser < T > ObjectSerialiser
45+ {
46+
47+ get
48+ {
49+ return SerialiserFactory . GetXmlSerialiser < T > ( ) ;
50+ }
51+
52+ }
53+
54+ /// <summary>
55+ /// An XML serialiser for a collection of objects.
56+ /// </summary>
57+ private ISerialiser < List < T > > ListSerialiser
58+ {
59+
60+ get
61+ {
62+ XmlRootAttribute xmlRootAttribute = new XmlRootAttribute ( TypeName + "s" ) { Namespace = SettingsManager . ConsumerSettings . DataModelNamespace , IsNullable = false } ;
63+ return SerialiserFactory . GetXmlSerialiser < List < T > > ( xmlRootAttribute ) ;
64+ }
65+
66+ }
67+
4168 /// <summary>
4269 /// Name of the SIF data type that the Consumer is based on, e.g. SchoolInfo, StudentPersonal, etc.
4370 /// </summary>
@@ -103,11 +130,11 @@ public virtual PK Create(T obj)
103130 }
104131
105132 string url = EnvironmentUtils . ParseServiceUrl ( environmentTemplate ) + "/" + TypeName + "s" + "/" + TypeName ;
106- string body = SerialiserFactory . GetXmlSerialiser < T > ( ) . Serialise ( obj ) ;
133+ string body = ObjectSerialiser . Serialise ( obj ) ;
107134 string xml = HttpUtils . PostRequest ( url , registrationService . AuthorisationToken , body ) ;
108135 if ( log . IsDebugEnabled ) log . Debug ( "XML from POST request ..." ) ;
109136 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
110- return ( SerialiserFactory . GetXmlSerialiser < T > ( ) . Deserialise ( xml ) ) . Id ;
137+ return ( ObjectSerialiser . Deserialise ( xml ) ) . Id ;
111138 }
112139
113140 /// <summary>
@@ -122,7 +149,7 @@ public virtual void Create(IEnumerable<T> objs)
122149 }
123150
124151 string url = EnvironmentUtils . ParseServiceUrl ( environmentTemplate ) + "/" + TypeName + "s" ;
125- string body = SerialiserFactory . GetXmlSerialiser < List < T > > ( new XmlRootAttribute ( TypeName + "s" ) ) . Serialise ( ( List < T > ) objs ) ;
152+ string body = ListSerialiser . Serialise ( ( List < T > ) objs ) ;
126153 string xml = HttpUtils . PostRequest ( url , registrationService . AuthorisationToken , body ) ;
127154 if ( log . IsDebugEnabled ) log . Debug ( "XML from POST request ..." ) ;
128155 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
@@ -143,7 +170,7 @@ public virtual T Retrieve(PK id)
143170 string xml = HttpUtils . GetRequest ( url , registrationService . AuthorisationToken ) ;
144171 if ( log . IsDebugEnabled ) log . Debug ( "XML from GET request ..." ) ;
145172 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
146- return SerialiserFactory . GetXmlSerialiser < T > ( ) . Deserialise ( xml ) ;
173+ return ObjectSerialiser . Deserialise ( xml ) ;
147174 }
148175
149176 /// <summary>
@@ -170,7 +197,7 @@ public virtual ICollection<T> Retrieve()
170197
171198 if ( xml . Length > 0 )
172199 {
173- ICollection < T > pageResult = SerialiserFactory . GetXmlSerialiser < List < T > > ( new XmlRootAttribute ( TypeName + "s" ) ) . Deserialise ( xml ) ;
200+ ICollection < T > pageResult = ListSerialiser . Deserialise ( xml ) ;
174201
175202 if ( pageResult == null || pageResult . Count == 0 )
176203 {
@@ -202,11 +229,12 @@ public virtual ICollection<T> Retrieve(T obj)
202229 }
203230
204231 string url = EnvironmentUtils . ParseServiceUrl ( environmentTemplate ) + "/" + TypeName + "s" ;
205- string body = SerialiserFactory . GetXmlSerialiser < T > ( ) . Serialise ( obj ) ;
232+ string body = ObjectSerialiser . Serialise ( obj ) ;
206233 string xml = HttpUtils . PostRequest ( url , registrationService . AuthorisationToken , body , "GET" ) ;
207234 if ( log . IsDebugEnabled ) log . Debug ( "XML from POST request ..." ) ;
208235 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
209- return SerialiserFactory . GetXmlSerialiser < List < T > > ( new XmlRootAttribute ( TypeName + "s" ) ) . Deserialise ( xml ) ;
236+
237+ return ListSerialiser . Deserialise ( xml ) ;
210238 }
211239
212240 /// <summary>
@@ -224,7 +252,8 @@ public virtual ICollection<T> Retrieve(int navigationPage, int navigationPageSiz
224252 string xml = HttpUtils . GetRequest ( url , registrationService . AuthorisationToken , navigationPage , navigationPageSize ) ;
225253 if ( log . IsDebugEnabled ) log . Debug ( "XML from GET request ..." ) ;
226254 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
227- return SerialiserFactory . GetXmlSerialiser < List < T > > ( new XmlRootAttribute ( TypeName + "s" ) ) . Deserialise ( xml ) ;
255+
256+ return ListSerialiser . Deserialise ( xml ) ;
228257 }
229258
230259 /// <summary>
@@ -239,7 +268,7 @@ public virtual void Update(T obj)
239268 }
240269
241270 string url = EnvironmentUtils . ParseServiceUrl ( environmentTemplate ) + "/" + TypeName + "s" + "/" + obj . Id ;
242- string body = SerialiserFactory . GetXmlSerialiser < T > ( ) . Serialise ( obj ) ;
271+ string body = ObjectSerialiser . Serialise ( obj ) ;
243272 string xml = HttpUtils . PutRequest ( url , registrationService . AuthorisationToken , body ) ;
244273 if ( log . IsDebugEnabled ) log . Debug ( "XML from PUT request ..." ) ;
245274 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
@@ -257,7 +286,7 @@ public virtual void Update(IEnumerable<T> objs)
257286 }
258287
259288 string url = EnvironmentUtils . ParseServiceUrl ( environmentTemplate ) + "/" + TypeName + "s" ;
260- string body = SerialiserFactory . GetXmlSerialiser < List < T > > ( new XmlRootAttribute ( TypeName + "s" ) ) . Serialise ( ( List < T > ) objs ) ;
289+ string body = ListSerialiser . Serialise ( ( List < T > ) objs ) ;
261290 string xml = HttpUtils . PutRequest ( url , registrationService . AuthorisationToken , body ) ;
262291 if ( log . IsDebugEnabled ) log . Debug ( "XML from PUT request ..." ) ;
263292 if ( log . IsDebugEnabled ) log . Debug ( xml ) ;
0 commit comments