1515import com .marklogic .client .ext .tokenreplacer .TokenReplacer ;
1616import com .marklogic .client .io .Format ;
1717import com .marklogic .client .io .StringHandle ;
18+ import org .jdom2 .Element ;
19+ import org .jdom2 .input .SAXBuilder ;
1820import org .springframework .beans .factory .DisposableBean ;
1921import org .springframework .core .io .Resource ;
2022import org .springframework .core .task .SyncTaskExecutor ;
@@ -181,12 +183,43 @@ protected void loadProperties(Modules modules, Set<Resource> loadedModules) {
181183 }
182184
183185 ServerConfigurationManager mgr = client .newServerConfigManager ();
186+ if (f .getName ().endsWith ("xml" )) {
187+ applyXmlProperties (mgr , r , f );
188+ } else {
189+ applyJsonProperties (mgr , r , f );
190+ }
191+
192+ if (logger .isInfoEnabled ()) {
193+ logger .info ("Writing REST server configuration" );
194+ logger .info ("Default document read transform: " + mgr .getDefaultDocumentReadTransform ());
195+ logger .info ("Transform all documents on read: " + mgr .getDefaultDocumentReadTransformAll ());
196+ logger .info ("Validate query options: " + mgr .getQueryOptionValidation ());
197+ logger .info ("Validate queries: " + mgr .getQueryValidation ());
198+ logger .info ("Output debugging: " + mgr .getServerRequestLogging ());
199+ if (mgr .getUpdatePolicy () != null ) {
200+ logger .info ("Update policy: " + mgr .getUpdatePolicy ().name ());
201+ }
202+ }
203+ mgr .writeConfiguration ();
204+
205+ if (f != null && modulesManager != null ) {
206+ modulesManager .saveLastLoadedTimestamp (f , new Date ());
207+ }
208+
209+ loadedModules .add (r );
210+ }
211+
212+ protected void applyJsonProperties (ServerConfigurationManager mgr , Resource r , File file ) {
184213 ObjectMapper m = new ObjectMapper ();
185- JsonNode node = null ;
214+ JsonNode node ;
186215 try {
187216 node = m .readTree (r .getInputStream ());
188217 } catch (IOException ex ) {
189- throw new RuntimeException ("Unable to read REST configuration from file: " + f .getAbsolutePath (), ex );
218+ throw new RuntimeException ("Unable to read JSON REST properties file: " + file .getAbsolutePath (), ex );
219+ }
220+
221+ if (node .has ("debug" )) {
222+ mgr .setServerRequestLogging (node .get ("debug" ).asBoolean ());
190223 }
191224 if (node .has ("document-transform-all" )) {
192225 mgr .setDefaultDocumentReadTransformAll (node .get ("document-transform-all" ).asBoolean ());
@@ -203,27 +236,38 @@ protected void loadProperties(Modules modules, Set<Resource> loadedModules) {
203236 if (node .has ("validate-queries" )) {
204237 mgr .setQueryValidation (node .get ("validate-queries" ).asBoolean ());
205238 }
206- if (node .has ("debug" )) {
207- mgr .setServerRequestLogging (node .get ("debug" ).asBoolean ());
208- }
209- if (logger .isInfoEnabled ()) {
210- logger .info ("Writing REST server configuration" );
211- logger .info ("Default document read transform: " + mgr .getDefaultDocumentReadTransform ());
212- logger .info ("Transform all documents on read: " + mgr .getDefaultDocumentReadTransformAll ());
213- logger .info ("Validate query options: " + mgr .getQueryOptionValidation ());
214- logger .info ("Validate queries: " + mgr .getQueryValidation ());
215- logger .info ("Output debugging: " + mgr .getServerRequestLogging ());
216- if (mgr .getUpdatePolicy () != null ) {
217- logger .info ("Update policy: " + mgr .getUpdatePolicy ().name ());
218- }
219- }
220- mgr .writeConfiguration ();
239+ }
221240
222- if (f != null && modulesManager != null ) {
223- modulesManager .saveLastLoadedTimestamp (f , new Date ());
241+ /**
242+ * @param mgr
243+ * @param r
244+ * @param file
245+ */
246+ protected void applyXmlProperties (ServerConfigurationManager mgr , Resource r , File file ) {
247+ Element root ;
248+ try {
249+ root = new SAXBuilder ().build (r .getInputStream ()).getRootElement ();
250+ } catch (Exception e ) {
251+ throw new RuntimeException ("Unable to read XML REST properties file: " + file .getAbsolutePath (), e );
252+ }
253+
254+ for (Element child : root .getChildren ()) {
255+ final String value = child .getValue ();
256+ final String name = child .getName ();
257+ if ("debug" .equals (name )) {
258+ mgr .setServerRequestLogging (Boolean .parseBoolean (value ));
259+ } else if ("document-transform-all" .equals (name )) {
260+ mgr .setDefaultDocumentReadTransformAll (Boolean .parseBoolean (value ));
261+ } else if ("document-transform-out" .equals (name )) {
262+ mgr .setDefaultDocumentReadTransform (value );
263+ } else if ("update-policy" .equals (name )) {
264+ mgr .setUpdatePolicy (UpdatePolicy .valueOf (value ));
265+ } else if ("validate-options" .equals (name )) {
266+ mgr .setQueryOptionValidation (Boolean .parseBoolean (value ));
267+ } else if ("validate-queries" .equals (name )) {
268+ mgr .setQueryValidation (Boolean .parseBoolean (value ));
269+ }
224270 }
225-
226- loadedModules .add (r );
227271 }
228272
229273 protected File getFileFromResource (Resource r ) {
0 commit comments