-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathTableApiRepository.java
More file actions
33 lines (29 loc) · 1.55 KB
/
TableApiRepository.java
File metadata and controls
33 lines (29 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package data.repositories;
import data.entities.ServiceNowEntity;
import data.contracts.ServiceNowTable;
import data.converters.TableApiConverter;
import io.restassured.response.Response;
import solutions.bellatrix.data.http.configuration.HttpSettings;
import solutions.bellatrix.data.http.httpContext.HttpContext;
import solutions.bellatrix.data.http.infrastructure.HttpResponse;
import solutions.bellatrix.data.http.infrastructure.QueryParameter;
import java.util.Map;
import java.util.function.Supplier;
public abstract class TableApiRepository<T extends ServiceNowEntity> extends ServiceNowRepository<T> {
protected TableApiRepository(Class<T> entityType, ServiceNowTable serviceNowTable) {
super(entityType, new TableApiConverter(), () -> {
HttpSettings httpSettings = HttpSettings.custom(x -> x.setBasePath("api/now/table/%s".formatted(serviceNowTable.getTableName())));
var httpContext = new HttpContext(httpSettings);
httpContext.addQueryParameter(new QueryParameter("sysparm_exclude_reference_link", "true"));
return httpContext;
});
}
@Override
protected HttpResponse handleResponse(Supplier<Response> responseSupplier) {
var suppliedResponse = responseSupplier.get();
var entityJson = suppliedResponse.jsonPath().getJsonObject("result");
TableApiConverter servicenowDeserializer = (TableApiConverter)getObjectConverter();
String body = servicenowDeserializer.toString(entityJson, Map.class);
return new HttpResponse(body, suppliedResponse);
}
}