@@ -295,6 +295,87 @@ protected <T extends BaseEntity> T createEntity(
295295 EntityDeserializers .removeParameterized ();
296296 }
297297 }
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+ }
298379
299380 protected <T > T createEntity (String str , Class <T > clazz , Class <?>... pclazz ) throws ArangoException {
300381 try {
0 commit comments