@@ -49,18 +49,6 @@ public abstract class BaseArangoDriver {
4949
5050 private static final Pattern databaseNamePattern = Pattern .compile ("^[a-zA-Z][a-zA-Z0-9\\ -_]{0,63}$" );
5151
52- // protected String createDocumentHandle(long collectionId, long documentId)
53- // {
54- // // validateCollectionNameは不要
55- // return collectionId + "/" + documentId;
56- // }
57- //
58- // protected String createDocumentHandle(String collectionName, long
59- // documentId) throws ArangoException {
60- // validateCollectionName(collectionName);
61- // return collectionName + "/" + documentId;
62- // }
63-
6452 protected String createDocumentHandle (long collectionId , String documentKey ) {
6553 return collectionId + "/" + documentKey ;
6654 }
@@ -106,7 +94,7 @@ protected void validateDatabaseName(String database, boolean allowNull) throws A
10694 }
10795 } else {
10896 valid = databaseNamePattern .matcher (database ).matches ();
109- if (database . equals ( "_system" )) {
97+ if ("_system" . equals ( database )) {
11098 valid = true ;
11199 }
112100 }
@@ -185,7 +173,7 @@ private int checkServerErrors(HttpResponseEntity res) throws ArangoException {
185173
186174 if (statusCode >= 400 ) { // always throws ArangoException
187175 DefaultEntity defaultEntity = new DefaultEntity ();
188- if (res .getText () != null && !res .getText (). equalsIgnoreCase ( "" ) && statusCode != 500 ) {
176+ if (res .getText () != null && !"" . equals ( res .getText ()) && statusCode != 500 ) {
189177 JsonParser jsonParser = new JsonParser ();
190178 JsonElement jsonElement = jsonParser .parse (res .getText ());
191179 JsonObject jsonObject = jsonElement .getAsJsonObject ();
@@ -194,47 +182,7 @@ private int checkServerErrors(HttpResponseEntity res) throws ArangoException {
194182 JsonElement errorNumber = jsonObject .get ("errorNum" );
195183 defaultEntity .setErrorNumber (errorNumber .getAsInt ());
196184 } else {
197- String statusPhrase = "" ;
198- switch (statusCode ) {
199- case 400 :
200- statusPhrase = "Bad Request" ;
201- break ;
202- case 401 :
203- statusPhrase = "Unauthorized" ;
204- break ;
205- case 403 :
206- statusPhrase = "Forbidden" ;
207- break ;
208- case 404 :
209- statusPhrase = "Not Found" ;
210- break ;
211- case 405 :
212- statusPhrase = "Method Not Allowed" ;
213- break ;
214- case 406 :
215- statusPhrase = "Not Acceptable" ;
216- break ;
217- case 407 :
218- statusPhrase = "Proxy Authentication Required" ;
219- break ;
220- case 408 :
221- statusPhrase = "Request Time-out" ;
222- break ;
223- case 409 :
224- statusPhrase = "Conflict" ;
225- break ;
226- case 500 :
227- statusPhrase = "Internal Server Error" ;
228- break ;
229- default :
230- statusPhrase = "unknown error" ;
231- break ;
232- }
233-
234- defaultEntity .setErrorMessage (statusPhrase );
235- if (statusCode == 500 ) {
236- defaultEntity .setErrorMessage (statusPhrase + ": " + res .getText ());
237- }
185+ defaultEntity .setErrorMessage (res .createStatusPhrase ());
238186 }
239187
240188 defaultEntity .setCode (statusCode );
@@ -271,7 +219,6 @@ protected <T extends BaseEntity> T createEntity(
271219 return null ;
272220 }
273221 boolean isDocumentEntity = false ;
274- // boolean requestSuccessful = true;
275222
276223 // the following was added to ensure, that attributes with a key like
277224 // "error", "code", "errorNum"
@@ -286,17 +233,8 @@ protected <T extends BaseEntity> T createEntity(
286233 try {
287234 EntityDeserializers .setParameterized (pclazz );
288235
289- T entity = createEntityImpl (res , clazz );
290- if (entity == null ) {
291- Class <?> c = MissingInstanceCreater .getMissingClass (clazz );
292- entity = ReflectionUtils .newInstance (c );
293- } else if (res .isBatchRepsonse ()) {
294- try {
295- entity = clazz .newInstance ();
296- } catch (Exception e ) {
297- throw new ArangoException (e );
298- }
299- }
236+ T entity = createEntityWithFallback (res , clazz );
237+
300238 setStatusCode (res , entity );
301239 if (validate ) {
302240 validate (res , entity );
@@ -316,6 +254,22 @@ protected <T extends BaseEntity> T createEntity(
316254 }
317255 }
318256
257+ private <T extends BaseEntity > T createEntityWithFallback (HttpResponseEntity res , Class <T > clazz )
258+ throws ArangoException {
259+ T entity = createEntityImpl (res , clazz );
260+ if (entity == null ) {
261+ Class <?> c = MissingInstanceCreater .getMissingClass (clazz );
262+ entity = ReflectionUtils .newInstance (c );
263+ } else if (res .isBatchRepsonse ()) {
264+ try {
265+ entity = clazz .newInstance ();
266+ } catch (Exception e ) {
267+ throw new ArangoException (e );
268+ }
269+ }
270+ return entity ;
271+ }
272+
319273 /**
320274 * Gets the raw JSON string with results, from the Http response
321275 *
@@ -371,57 +325,58 @@ protected void setStatusCode(HttpResponseEntity res, BaseEntity entity) throws A
371325
372326 protected void validate (HttpResponseEntity res , BaseEntity entity ) throws ArangoException {
373327
374- if (entity != null ) {
375- if (entity .isError ()) {
376- throw new ArangoException (entity );
377- }
328+ if (entity != null && entity .isError ()) {
329+ throw new ArangoException (entity );
378330 }
379331
380332 // Custom Error
381333 if (res .getStatusCode () >= 400 ) {
382334
335+ BaseEntity tmpEntity = entity ;
336+ if (tmpEntity == null ) {
337+ tmpEntity = new DefaultEntity ();
338+ }
339+
383340 if (res .isTextResponse ()) {
384- // entity.setErrorNumber(0);
385- entity .setErrorNumber (res .getStatusCode ());
386- entity .setErrorMessage (res .getText ());
341+ tmpEntity .setErrorNumber (res .getStatusCode ());
342+ tmpEntity .setErrorMessage (res .getText ());
387343 } else {
388- entity .setErrorNumber (res .getStatusCode ());
389- entity .setErrorMessage (res .getStatusPhrase ());
344+ tmpEntity .setErrorNumber (res .getStatusCode ());
345+ tmpEntity .setErrorMessage (res .getStatusPhrase ());
390346 }
391347
392348 switch (res .getStatusCode ()) {
393349 case 401 :
394- entity .setErrorMessage ("Unauthorized" );
350+ tmpEntity .setErrorMessage ("Unauthorized" );
395351 break ;
396352 case 403 :
397- entity .setErrorMessage ("Forbidden" );
353+ tmpEntity .setErrorMessage ("Forbidden" );
398354 break ;
399355 default :
400356 }
401357
402- throw new ArangoException (entity );
358+ throw new ArangoException (tmpEntity );
403359 }
404360 }
405361
406362 @ SuppressWarnings ("unchecked" )
407363 protected <T > T createEntityImpl (HttpResponseEntity res , Class <T > type ) throws ArangoException {
364+ T result = null ;
408365 if (res .isJsonResponse ()) {
409366 try {
410- return EntityFactory .createEntity (res .getText (), type );
367+ result = EntityFactory .createEntity (res .getText (), type );
411368 } catch (JsonSyntaxException e ) {
412369 throw new ArangoException ("got JsonSyntaxException while creating entity" , e );
413370 } catch (JsonParseException e ) {
414371 throw new ArangoException ("got JsonParseException while creating entity" , e );
415372 }
416- }
417- if (res .isDumpResponse () && StreamEntity .class .isAssignableFrom (type )) {
418- return (T ) new StreamEntity (res .getStream ());
419- }
420- if (res .getText () != null && res .getText ().length () > 0 ) {
373+ } else if (res .isDumpResponse () && StreamEntity .class .isAssignableFrom (type )) {
374+ result = (T ) new StreamEntity (res .getStream ());
375+ } else if (StringUtils .isNotEmpty (res .getText ())) {
421376 throw new ArangoException ("expected JSON result from server but got: " + res .getText ());
422377 }
423378
424- return null ;
379+ return result ;
425380 }
426381
427382 protected String createEndpointUrl (String database , Object ... paths ) throws ArangoException {
0 commit comments