JsonObject[] individualRequests;
JsonElement root = parser.parse( requestString );
if( root.isJsonArray() ) {
JsonArray rootArray = (JsonArray)root;
if( rootArray.size() == 0 ) {
RequestException ex = RequestException.forRequestBatchMustHaveAtLeastOneRequest();
logger.error( ex.getMessage(), ex );
throw ex;
}
individualRequests = new JsonObject[rootArray.size()];
int i = 0;
for( JsonElement item : rootArray ) {
if( !item.isJsonObject()) {
RequestException ex = RequestException.forRequestBatchItemMustBeAValidJsonObject(i);
logger.error( ex.getMessage(), ex );
throw ex;
}
individualRequests[i] = (JsonObject)item;
i++;
}
}
else if( root.isJsonObject() ) {
individualRequests = new JsonObject[] {(JsonObject)root};
}
else {
RequestException ex = RequestException.forRequestMustBeAValidJsonObjectOrArray();
logger.error( ex.getMessage(), ex );
throw ex;
}
return individualRequests;
}