@@ -295,6 +295,87 @@ protected <T extends BaseEntity> T createEntity(
295
295
EntityDeserializers .removeParameterized ();
296
296
}
297
297
}
298
+
299
+ /**
300
+ * Gets the raw JSON string with results, from the Http response
301
+ * @param res the response of the database
302
+ * @return
303
+ * @throws ArangoException
304
+ */
305
+ protected String getJSONResponseText (HttpResponseEntity res ) throws ArangoException {
306
+ if (res == null ) {
307
+ return null ;
308
+ }
309
+ int statusCode = res .getStatusCode ();
310
+ if (statusCode >= 400 ) {
311
+ DefaultEntity defaultEntity = new DefaultEntity ();
312
+ if (res .getText () != null && !res .getText ().equalsIgnoreCase ("" ) && statusCode != 500 ) {
313
+ JsonParser jsonParser = new JsonParser ();
314
+ JsonElement jsonElement = jsonParser .parse (res .getText ());
315
+ JsonObject jsonObject = jsonElement .getAsJsonObject ();
316
+ JsonElement errorMessage = jsonObject .get ("errorMessage" );
317
+ defaultEntity .setErrorMessage (errorMessage .getAsString ());
318
+ JsonElement errorNumber = jsonObject .get ("errorNum" );
319
+ defaultEntity .setErrorNumber (errorNumber .getAsInt ());
320
+ } else {
321
+ String statusPhrase = "" ;
322
+ switch (statusCode ) {
323
+ case 400 :
324
+ statusPhrase = "Bad Request" ;
325
+ break ;
326
+ case 401 :
327
+ statusPhrase = "Unauthorized" ;
328
+ break ;
329
+ case 403 :
330
+ statusPhrase = "Forbidden" ;
331
+ break ;
332
+ case 404 :
333
+ statusPhrase = "Not Found" ;
334
+ break ;
335
+ case 405 :
336
+ statusPhrase = "Method Not Allowed" ;
337
+ break ;
338
+ case 406 :
339
+ statusPhrase = "Not Acceptable" ;
340
+ break ;
341
+ case 407 :
342
+ statusPhrase = "Proxy Authentication Required" ;
343
+ break ;
344
+ case 408 :
345
+ statusPhrase = "Request Time-out" ;
346
+ break ;
347
+ case 409 :
348
+ statusPhrase = "Conflict" ;
349
+ break ;
350
+ case 500 :
351
+ statusPhrase = "Internal Server Error" ;
352
+ break ;
353
+ default :
354
+ statusPhrase = "unknown error" ;
355
+ break ;
356
+ }
357
+
358
+ defaultEntity .setErrorMessage (statusPhrase );
359
+ if (statusCode == 500 ) {
360
+ defaultEntity .setErrorMessage (statusPhrase + ": " + res .getText ());
361
+ }
362
+ }
363
+
364
+ defaultEntity .setCode (statusCode );
365
+ defaultEntity .setStatusCode (statusCode );
366
+ defaultEntity .setError (true );
367
+ ArangoException arangoException = new ArangoException (defaultEntity );
368
+ arangoException .setCode (statusCode );
369
+ throw arangoException ;
370
+ }
371
+
372
+ // no errors, return results as a JSON string
373
+ JsonParser jsonParser = new JsonParser ();
374
+ JsonElement jsonElement = jsonParser .parse (res .getText ());
375
+ JsonObject jsonObject = jsonElement .getAsJsonObject ();
376
+ JsonElement result = jsonObject .get ("result" );
377
+ return result .toString ();
378
+ }
298
379
299
380
protected <T > T createEntity (String str , Class <T > clazz , Class <?>... pclazz ) throws ArangoException {
300
381
try {
0 commit comments